Пн go дБ лимит с заполнителем - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть один документ, показанный ниже, данные имеют статус с именем элемента

{
    "_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. каждый уникальный статус имеет массив данных своих данных с ограничением 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.

Спасибо,

1 Ответ

0 голосов
/ 18 февраля 2020

Вам необходимо использовать $ group

db.collection.aggregate([
  {
    "$group": {
      _id: "$status",
      status: { "$first": "$status" },
      data: { $push: "$$ROOT" } }
  },
  { "$addFields": { data: { $slice: [ "$data", 2 ] } } }
])

Пн go Детская площадка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...