我有一个文档,显示以下数据的状态为项目名称
{
"_id" : ObjectId("5e4aaf6f9588116a6b36e9d4"),
"item" : "Item_1",
"status" : 1
}
{
"_id" : ObjectId("5e4aaf6f9588116a6b36e9d5"),
"item" : "Item_2",
"status" : 1
}
{
"_id" : ObjectId("5e4aaf6f9588116a6b36e9d6"),
"item" : "Item_3",
"status" : 1
}
.....
{
"_id" : ObjectId("5e4aaf6f9588116a6b36e9de"),
"item" : "Item_11",
"status" : 3
}
{
"_id" : ObjectId("5e4aaf6f9588116a6b36e9df"),
"item" : "Item_12",
"status" : 3
}
我需要选择以下条件的所有数据。 1.显示所有唯一状态。 2.每个唯一的Status都有自己的数据数组,数据限制为2。
{
"_id" : ObjectId("5e4aaf6f9588116a6b36e9d7"),
"status" : 1,
"data" : [
{
"_id" : ObjectId("5e4aaf6f9588116a6b36e9d4"),
"item" : "Item_1",
"status" : 1
},
{
"_id" : ObjectId("5e4aaf6f9588116a6b36e9d5"),
"item" : "Item_2",
"status" : 1
}
]
},
........
{
"_id" : ObjectId("5e4aaf6f9588116a6b36e9dd"),
"status" : 3,
"data" : [
{
"_id" : ObjectId("5e4aaf6f9588116a6b36e9dd"),
"item" : "Item_10",
"status" : 3
},
{
"_id" : ObjectId("5e4aaf6f9588116a6b36e9de"),
"item" : "Item_11",
"status" : 3
}
]
}
请帮助我。我是mongoDB的新手。
谢谢
答案 0 :(得分:0)
您需要使用$group
db.collection.aggregate([
{
"$group": {
_id: "$status",
status: { "$first": "$status" },
data: { $push: "$$ROOT" } }
},
{ "$addFields": { data: { $slice: [ "$data", 2 ] } } }
])