我无法成功提取所有主记录并最终获得阵列。我只提取与“属性”主要记录的字段计数> 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