Mongodb 如何在$group阶段之后返回所有字段而不指定
如何对文档中的子数组进行排序并保留父字段? 我有这样的收藏:Mongodb 如何在$group阶段之后返回所有字段而不指定,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,如何对文档中的子数组进行排序并保留父字段? 我有这样的收藏: { "_id" : ObjectId("5d1757929831633ff8abb638"), "name" : "Carraro Exlusive", "description" : "Carraro Exlusive description", "image" : "image-15", "__v" : 0, "sellers" : [ {
{
"_id" : ObjectId("5d1757929831633ff8abb638"),
"name" : "Carraro Exlusive",
"description" : "Carraro Exlusive description",
"image" : "image-15",
"__v" : 0,
"sellers" : [
{
"_id" : ObjectId("5d1757929831633ff8abb639"),
"product" : ObjectId("5d1757929831633ff8abb638"),
"seller" : ObjectId("5d1518582f9254189ca92e59"),
"price" : 13,
"stock" : 5,
"__v" : 0
},
{
"_id" : ObjectId("5d175b60cf85a22f745235ee"),
"product" : ObjectId("5d1757929831633ff8abb638"),
"seller" : ObjectId("5d164802c4dc7811b0f34b86"),
"price" : 10,
"stock" : 222,
"__v" : 0
}
]
}
我想按价格从最小到最大对内部卖家数组进行排序
我想要的结果是:
{
"_id" : ObjectId("5d1757929831633ff8abb638"),
"name" : "Carraro Exlusive",
"description" : "Carraro Exlusive",
"category" : ObjectId("5d151ad1b72c830f14374bb4"),
"brand" : ObjectId("5d151981b72c830f14374bb2"),
"image" : "image-15",
"__v" : 0,
"sellers" : [
{
"_id" : ObjectId("5d175b60cf85a22f745235ee"),
"product" : ObjectId("5d1757929831633ff8abb638"),
"seller" : ObjectId("5d164802c4dc7811b0f34b86"),
"price" : 10,
"stock" : 222,
"__v" : 0
},
{
"_id" : ObjectId("5d1757929831633ff8abb639"),
"product" : ObjectId("5d1757929831633ff8abb638"),
"seller" : ObjectId("5d1518582f9254189ca92e59"),
"price" : 13,
"stock" : 5,
"__v" : 0
}
]
}
我看到了以下帖子,但我想保留父字段:
您可以使用下面的聚合
db.collection.aggregate([
{ "$unwind": "$sellers" },
{ "$sort": { "sellers.price": 1 }},
{ "$group": {
"_id": "$_id",
"sellers": { "$push": "$sellers" },
"allFields": { "$first": "$$ROOT" }
}},
{ "$replaceRoot": {
"newRoot": {
"$mergeObjects": [
"$allFields",
{ "sellers": "$sellers" }
]
}
}}
])
@正如我在帖子中指出的,我已经看到了一个问题,我想要的是保留父字段。@ashgreat:)非常感谢,有没有办法接受这个问题作为答案?@ash你应该在答案中加入这个问题。这个解决方案将出现在谷歌搜索类似的问题。如果您没有机会,我可以在不久的将来将您的问题复制粘贴到答案中。。很酷+1@JBone是 啊多恩