我有一个关于MongoDB聚合查询的问题,它几乎类似于$unwind 2 fields separately in mongodb query。MongoDB分别展开2个嵌入式阵列
这是文件:
{
"_id" : "1",
"details" : {
"phonenumber" : [
"1",
"2"
],
"name" : [
"a",
"b"
]
}
}
,我试图来构建查询将返回我以下结果:
{ "_id" : "1", "phonenumber" : "1", "name" : null },
{ "_id" : "1", "phonenumber" : "2", "name" : null },
{ "_id" : "1", "phonenumber" : null, "name" : "a" },
{ "_id" : "1", "phonenumber" : null, "name" : "b" }
可能有人请帮助我吗?
我能想出最近的解决方案是通过以下查询:
db.document.aggregate([ { $unwind: { path: "$details.name"} }, { $unwind: { path: "$details.phonenumber" } }, { $project: { _id: 1, name: "$details.name", phonenumber: "$details.phonenumber" } } ])
而且从上述查询的输出为:
{ "_id" : "1", "phonenumber" : "1", "name" : "a" },
{ "_id" : "1", "phonenumber" : "1", "name" : "b" },
{ "_id" : "1", "phonenumber" : "2", "name" : "a" },
{ "_id" : "1", "phonenumber" : "2", "name" : "b" }
你可以给你的集合中的文档的完整的例子吗?在你的尝试中,你有'$ details.email'。 –
聚合流水线是顺序的。一个阶段的输出将被输入到另一个阶段。你要做的是将初始数据分成两个阶段。这是不可能的。 – RaR
@ʰᵈˑ我在问题中编辑了'email'字段和'name'。这是一个错字。 –