Как получить самую старую запись в группе mongodb в сторону сгруппированной записи? - PullRequest
0 голосов
/ 28 августа 2018

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

db.collection.aggregate([
{ 
    $match : { 
        userId: 16,
        userListId : ObjectId('5b7e85f956de7e6ead026e23') ,

    } 
},
{
    $group: 
    {
        _id: '$domain',
        "websites": { $push: {
            '_id' : '$_id',
            'userId' : '$userId',
            'userListId' : "$userListId",
            'createdAt' : '$createdAt'
        }}
    }
}

]);

Для одного домена у меня есть 4 строки, которые

{
        "_id" : ObjectId("5b7e55bb0f81ba2c5b0b54c8"),
        "userId" : 16,
        "userListId" : ObjectId("5b7e85f956de7e6ead026e23"),
        "createdAt" : 1535006139565.0
    }, 
    {
        "_id" : ObjectId("5b7e55bb0f81ba2c5b0b54a9"),
        "userId" : 16,
        "userListId" : ObjectId("5b7e85f956de7e6ead026e23"),
        "createdAt" : 1535006139564.0
    }, 
    {
        "_id" : ObjectId("5b7e55bb0f81ba2c5b0b54b4"),
        "userId" : 16,
        "userListId" : ObjectId("5b7e85f956de7e6ead026e23"),
        "createdAt" : 1535006139565.0
    }, 
    {
        "_id" : ObjectId("5b7e55bb0f81ba2c5b0b54c4"),
        "userId" : 16,
        "userListId" : ObjectId("5b7e85f956de7e6ead026e23"),
        "createdAt" : 1535006139565.0
    }

В приведенных выше записях вторая запись является первой из базы данных, и я хочу получить ее на первой позиции, как я могу это сделать?

"_id" : ObjectId("5b7e55bb0f81ba2c5b0b54a9")

Я хочу выше записи на первой позиции

1 Ответ

0 голосов
/ 28 августа 2018

Вы можете просто начать свой конвейер с помощью оператора $ sort:

db.collection.aggregate([
  {
    $match: {
      userId: 16,
      userListId: ObjectId("5b7e85f956de7e6ead026e23"),

    }
  },
  {
    $sort: {
      "createdAt": 1
    }
  },
  {
    $group: {
      _id: "$domain",
      "websites": {
        $push: {
          "_id": "$_id",
          "userId": "$userId",
          "userListId": "$userListId",
          "createdAt": "$createdAt"
        }
      }
    }
  }
])

Посмотрите, как работает здесь

Примечание : обновлено в соответствии с предложением @chridam. Благодаря.

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