如何 return Mongodb 将管道文档聚合为一个文档?
How to return Mongodb Aggregate pipeline docs to ONE document?
我知道这必须很简单,但就我的生活而言,我似乎无法在我的管道中生成正确的最后阶段来使其正常工作。以下是我在 mongo 查询中的某个阶段的文档输出:
{ "_id" : ObjectId("61435ceb233ce0118c1d93ec") }
{ "_id" : ObjectId("61435cf29598d31c17f0d839") }
{ "_id" : ObjectId("611e5cf953396d78985d222f") }
{ "_id" : ObjectId("61435cf773b8b06c848af83e") }
{ "_id" : ObjectId("61435cfd7ac204efa857e7ce") }
{ "_id" : ObjectId("611e5cf953396d78985d2237") }
我想将这些文档放入一个单独的文档中,并使用这样的数组:
{
"_id" : [
ObjectId("61435ceb233ce0118c1d93ec"),
ObjectId("61435cf29598d31c17f0d839"),
ObjectId("611e5cf953396d78985d222f"),
ObjectId("61435cf773b8b06c848af83e"),
ObjectId("61435cfd7ac204efa857e7ce"),
ObjectId("611e5cf953396d78985d2237")
]
}
我在管道中的最后阶段很简单:
{
$group:{_id:"$uniqueIds"}
}
我已经尝试了从 $push 到 $mergeObjects 的所有方法,但无论我做什么,它总是以某种形状或形式返回原始 6 个文档,而不是一个文档。任何建议将不胜感激!提前致谢。
查询
- 按 null 分组,将所有集合视为 1 组
db.collection.aggregate([
{
"$group": {
"_id": null,
"ids": {
"$push": "$_id"
}
}
},
{
"$unset": "_id"
}
])
我知道这必须很简单,但就我的生活而言,我似乎无法在我的管道中生成正确的最后阶段来使其正常工作。以下是我在 mongo 查询中的某个阶段的文档输出:
{ "_id" : ObjectId("61435ceb233ce0118c1d93ec") }
{ "_id" : ObjectId("61435cf29598d31c17f0d839") }
{ "_id" : ObjectId("611e5cf953396d78985d222f") }
{ "_id" : ObjectId("61435cf773b8b06c848af83e") }
{ "_id" : ObjectId("61435cfd7ac204efa857e7ce") }
{ "_id" : ObjectId("611e5cf953396d78985d2237") }
我想将这些文档放入一个单独的文档中,并使用这样的数组:
{
"_id" : [
ObjectId("61435ceb233ce0118c1d93ec"),
ObjectId("61435cf29598d31c17f0d839"),
ObjectId("611e5cf953396d78985d222f"),
ObjectId("61435cf773b8b06c848af83e"),
ObjectId("61435cfd7ac204efa857e7ce"),
ObjectId("611e5cf953396d78985d2237")
]
}
我在管道中的最后阶段很简单:
{
$group:{_id:"$uniqueIds"}
}
我已经尝试了从 $push 到 $mergeObjects 的所有方法,但无论我做什么,它总是以某种形状或形式返回原始 6 个文档,而不是一个文档。任何建议将不胜感激!提前致谢。
查询
- 按 null 分组,将所有集合视为 1 组
db.collection.aggregate([
{
"$group": {
"_id": null,
"ids": {
"$push": "$_id"
}
}
},
{
"$unset": "_id"
}
])