[英]“Find() inside Insert” in MongoDB?
伙計們,我有一個名為“動物”的集合,示例文檔-
{
"_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 中編寫 Insert-statement 以編程方式生成“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 接口,因此您需要在執行插入之前對父 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);
試試吧...
db.animals.insert( {
"author" : "xxx@hotmail.com",
"name" : "Dog",
"status" : "active",
"parent_id" : db.animals.findOne( { "name": "Mammal" } )
} )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.