我有以下蒙戈文件,這是被稱爲屬性的更大的文件,其中也有顏色和尺寸如何獲得MongoDB的深嵌入式文件編號
> db.attributes.find({'name': {'en-UK': 'Fabric'}}).pretty()
{
"_id" : ObjectId("543261cda14c971132fa2b91"),
"values" : [
{
"source" : [
{
"_id" : ObjectId("543261cda14c971132fa2b79"),
"name" : {
"en-UK" : "Combed Cotton"
}
},
],
"name" : [
{
"_id" : ObjectId("543261cda14c971132fa2b85"),
"name" : {
"en-UK" : "Brushed 3-ply"
}
},
{
"_id" : ObjectId("543261cda14c971132fa2b8f"),
"name" : {
"en-UK" : "Plain Weave"
}
},
{
"_id" : ObjectId("543261cda14c971132fa2b90"),
"name" : {
"en-UK" : "1x1 Rib"
}
}
]
}
],
"name" : {
"en-UK" : "Fabric"
}
}
我想要的一部分返回一個子文檔的_id並且具有以下內容:
db.attributes.aggregate([
{ '$match': {'name.en-UK': 'Fabric'} },
{ '$unwind' : '$values' },
{ '$project': { 'name' : '$values.name'} },
{ '$match': { '$and': [{"name.name.en-UK" : "1x1 Rib"} ] }}
])
這樣做的正確方法是什麼?
而且,Fabric
值是兩個項目,source
和name
一個數組,但如果我填充它喜歡:
> db.attributes.find({'name': {'en-UK': 'Fabric'}}).pretty()
{
"_id" : ObjectId("543261cda14c971132fa2b91"),
"values" : {
"source" : [{ ... }]
"name": [{ ... }]
}
}
我收到以下錯誤
「ERRMSG」:「異常:$ unwind:字段路徑末尾的值必須是一個數組「
但是如果我把它包在一個方括號裏面,那麼這個工作,所以
> db.attributes.find({'name': {'en-UK': 'Fabric'}}).pretty()
{
"_id" : ObjectId("543261cda14c971132fa2b91"),
"values" : [{
"source" : [{ ... }],
"name": [{ ... }]
}]
}
我缺少什麼作爲values
是兩個對象,source
和name
陣列,每個包含的任何意見大加讚賞
對不起,我得到一個空的結果,'{「result」:[],「ok」:1}' – khinester 2014-10-06 11:35:30
@khinester你並不完全容易。下次在提交時從您的帖子中刪除「標籤」字符。用重要線條編輯。 – 2014-10-06 12:12:46