伙计们,我有一个名为“动物”的集合,示例文档 -
{
"_id" : ObjectId("57321290c46ff86ce9e00b35"),
"parent_id" : null,
"author" : "[email protected]",
"name" : "Mammal",
"status" : "active",
"sub_species" : [
"Dog",
"Cat",
"Cow"
]
}
{
"_id" : ObjectId("57321c10c46ff86ce9e00b36"),
"author" : "[email protected]",
"name" : "Dog",
"status" : "active",
"parent_id" : "57321290c46ff86ce9e00b35"
}
我的问题是 - 如何在mongo shell中编写一个Insert语句以编程方式生成'parent-id'(如果它已经存在)?我希望能够写出这样的东西 -
db.animals.insert( {
"author" : "[email protected]",
"name" : "Dog",
"status" : "active",
"parent_id" : {db.animals.find( { name: { $eq: 'Mammal' } } )}
} )
提前致谢
这是不可能的,因为mongo shell只是MongoDB服务器的交互式JS接口,因此在进行插入之前需要对父id进行单独的查询;您不能在插入文档中包含查询操作。
以下示例演示了这一点:
var parent_id = db.animals.findOne({ name: 'Mammal' })._id;
var insertDoc = {
"author" : "[email protected]",
"name" : "Dog",
"status" : "active",
"parent_id" : parent_id
};
db.animals.insert(insertDoc);
试一试...
db.animals.insert( {
"author" : "[email protected]",
"name" : "Dog",
"status" : "active",
"parent_id" : db.animals.findOne( { "name": "Mammal" } )
} )