Пн goose - Как найти в коллекции из массива идентификаторов объектов - PullRequest
1 голос
/ 21 января 2020

Допустим, у меня есть массив идентификаторов объектов:

[ 1, 2, 3, 4, 5 ]

, и у меня есть коллекция с именем user, которая содержит это значение:

[
  {
     _id: 3,
     name: 'hehe'
  },

  {
     _id: 5,
     name: 'hehe1'
  },

  {
     _id: 2,
     name: 'hehe2'
  },

  {
     _id: 1,
     name: 'hehe3'
  },

  {
     _id: 4,
     name: 'hehe4'
  },

  {
     _id: 6,
     name: 'hehe5'
  }
]

Как запросить идентификаторы объекта массива для коллекции "user"? какой результат должен быть в том же порядке, что и массив идентификаторов объектов, это будет возможно?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 21 января 2020

Вы можете использовать $ в для фильтрации документов, а затем вы можете использовать $ indexOfArray , чтобы добавить специальное поле, которое можно использовать в качестве ключа для $ sort :

db.collection.aggregate([
    {
        $match: { _id: { $in: [ 1, 2, 3, 4, 5 ] } }
    },
    {
        $addFields: { idx: { $indexOfArray: [ [ 1, 2, 3, 4, 5 ], "$_id" ] } }
    },
    {
        $sort: { idx: 1 }
    }
])

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

0 голосов
/ 21 января 2020

Для получения документов массива Id вы можете использовать $in следующим образом

collection.find( { key: { $in: [array] }}, callback );

ПРИМЕЧАНИЕ:

Не рекомендуется использовать порядок документов для сделать логи c. Мы не можем ожидать, что заказ будет одинаковым все время.

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