如何在MongoDB中重新组合子文档、具有相同字段的多文档?
我在mongoDB中有一个集合,如下所示:如何在MongoDB中重新组合子文档、具有相同字段的多文档?,mongodb,mongodb-query,Mongodb,Mongodb Query,我在mongoDB中有一个集合,如下所示: db.mycollection.find({}) { "_id" : ObjectId("5deb4ce4bbe1b67e6e5611e4"), "site" : "MDC", "label" : "407", "status" : "removed" } { "_id" : ObjectId("5def36379ca17632de773d7e"), "site" : "MDC", "lab
db.mycollection.find({})
{
"_id" : ObjectId("5deb4ce4bbe1b67e6e5611e4"),
"site" : "MDC",
"label" : "407",
"status" : "removed"
}
{
"_id" : ObjectId("5def36379ca17632de773d7e"),
"site" : "MDC",
"label" : "407",
"status" : "new"
}
{
"_id" : ObjectId("5df4740eab0d76657c19a7d2"),
"site" : "MDC",
"label" : "408",
"status" : "new"
}
我希望将具有相同字段“label”值的文档与状态为子文档的文档重新组合,以获得如下内容:
{
"_id" : ObjectId("5deb4ce4bbe1b67e6e5611e4"),
"site" : "MDC",
"label" : "407",
"status" : [
{
"label" : "new"
},
{
"label" : "removed"
}
]
}
我尝试了不同的方法(聚合、更新等),但完全失败了…您需要通过
标签或站点来$group
推送您的状态:
db.collection.aggregate([
{
$group: {
_id: "$label",
old_id: { $first: "$_id" },
site: { $first: "$site" },
status: { $push: { label: "$status" } }
}
},
{
$project: {
_id: "$old_id",
site: 1,
label: "$_id",
status: 1
}
}
])