我無法成功提取所有主記錄並最終獲得陣列。我只提取與「屬性」主要記錄的字段計數> 0帶或不帶子陣列記錄的聚合記錄
數據樣本是:
docs = [
{ docId : "1", fieldDoc1: "value", fieldDoc2: "value", attributes: [ { attrId: "1.1", fieldAttr1: "value" }, { attrId: "1.2", fieldAttr1: "value" }] },
{ docId : "2", fieldDoc1: "value", fieldDoc2: "value", attributes: [ { attrId: "2.1", fieldAttr1: "value" }] },
{ docId : "3", fieldDoc1: "value", fieldDoc2: "value", attributes: [ ] }
];
db.table.aggregate (
{ $match: { criterias on main part fields },
{ $unwind: "attributes" },
{ $match: { criteria on attributes fields },
{ $group : {
_id : "$docId",
"docs": {
"$push": {
"_id": "$docId",
"fieldDoc1": "$fieldDoc1",
"fieldDoc2": "$fieldDoc2",
"attributes": "$attributes"}
}
} });
對於爲例,用於提取所有的記錄,我嘗試:
db.table.aggregate (
{ $unwind: "attributes" },
{ $group : {
_id : "$docId",
"docs": {
"$push": {
"_id": "$docId",
"fieldDoc1": "$fieldDoc1",
"fieldDoc2": "$fieldDoc2",
"attributes": "$attributes"}
}
} });
只有我獲取docId:「1」和docId:「2」及其屬性。 docId:不返回沒有屬性的「3」。
1)那麼如何獲得所有相應的記錄,有或沒有屬性;
2)如何獲得主要部分的各個領域,沒有列舉這些literaly(fieldDoc1: 「$ fieldDoc1」,fieldDoc2 「:」 $ fieldDoc2" ,等等
問候
恩,這不適合我。我認爲這個解決方案是由mongodb 3.2提供的,並帶有以下選項:$ unwind:{path:,preserveNullAndEmptyArrays:true}。但我無法更新我的框架。 –
maiagarbot