亲们, 我有一个名为“动物”的集合,示例文档 -
{
"_id" : ObjectId("57321290c46ff86ce9e00b35"),
"parent_id" : null,
"author" : "xxx@hotmail.com",
"name" : "Mammal",
"status" : "active",
"sub_species" : [
"Dog",
"Cat",
"Cow"
]
}
{
"_id" : ObjectId("57321c10c46ff86ce9e00b36"),
"author" : "xxx@hotmail.com",
"name" : "Dog",
"status" : "active",
"parent_id" : "57321290c46ff86ce9e00b35"
}
我的问题是 - 如何在 mongo shell 中编写插入语句以编程方式生成“parent-id”(如果它已经存在)?我希望能够写出这样的东西 -
db.animals.insert( {
"author" : "xxx@hotmail.com",
"name" : "Dog",
"status" : "active",
"parent_id" : {db.animals.find( { name: { $eq: 'Mammal' } } )}
} )
提前致谢
最佳答案
这是不可能的,因为 mongo shell 只是 MongoDB 服务器的交互式 JS 接口(interface),因此您需要在执行插入之前单独查询父 ID;您不能在插入文档中包含查询操作。
下面的例子演示了这一点:
var parent_id = db.animals.findOne({ name: 'Mammal' })._id;
var insertDoc = {
"author" : "xxx@hotmail.com",
"name" : "Dog",
"status" : "active",
"parent_id" : parent_id
};
db.animals.insert(insertDoc);
关于mongodb - MongoDB 中的 "Find() inside Insert"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37378672/