我沒有代碼顯示,因爲我不知道如何實現我想要的。從Mongodb檢索一個子文檔
我讀過,有可能從文檔中返回一個子文檔,但我還沒有發現如何實際做到這一點。一個用戶收藏的一個人爲的例子:
[
{
"_id":0,
"Name":"Person 1",
"Cupboard":[
{
"_id":0,
"Items":[
{
"_id":1,
"Name":"item 1"
},
{
"_id":2,
"Name":"item 2"
}
]
}
]
}
,
{
"_id":1,
"Name":"Person 2",
"Cupboard":[
{
"_id":0,
"Items":[
{
"_id":1,
"Name":"item 1"
},
{
"_id":2,
"Name":"item 2"
}
]
}
]
}
]
我怎麼只能從櫥櫃返回項目,假設我知道櫃子的_id?我正在使用C#驅動程序,但即使在mongo shell中執行此操作也很有用。
這不會返回只投影'Cupboard.Items'數組的文檔數組嗎? – sambomartin
雖然這將返回父文檔減字段,所以不是技術上只返回項目,我傾向於將此標記爲答案,因爲我根本不明白下面答案中的$ unwind/$項目... –
@SamDelaney嘗試'db.Users.aggregate({$ unwind:「$ Cupboard」},{$ unwind:「$ Cupboard.Items」},{$ project:{_id:「$ Cupboard.Items._id」,Name:「$ Cupboard .Items.Name「}})'這將展開嵌套的項目數組並投影一個匹配'Items'子文檔的文檔數組 – sambomartin