“在MongoDB中的Insert”中查找()?

问题描述 投票:3回答:2

伙计们,我有一个名为“动物”的集合,示例文档 -

{
    "_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' } } )}
} )

提前致谢

mongodb mongodb-query
2个回答
4
投票

这是不可能的,因为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);

1
投票

试一试...

db.animals.insert( {
   "author" : "[email protected]",
   "name" : "Dog",
   "status" : "active",
   "parent_id" : db.animals.findOne( { "name": "Mammal" } )
} )
© www.soinside.com 2019 - 2024. All rights reserved.