Как запросить документы, содержащие поле из заданного ключа в массиве объекта? - PullRequest
1 голос
/ 15 марта 2020

Мой оригинальный код

const users = ["019e1c71","19e1c72a", "1b215900"];

Я просто получаю результаты по

User.find({
  _id: {$in: users}
});

Если я изменю переменную users на

const users = [{_id: "019e1c71"}, {_id: "19e1c72a"}, {_id: "1b215900"}];

Как получить результаты, содержащие заданный _id в массиве объекта?

Ответы [ 3 ]

1 голос
/ 16 марта 2020

Если вы знаете, что это всегда _id:

const users = [{_id: "019e1c71"}, {_id: "19e1c72a"}, {_id: "1b215900"}];

let query = { _id: { $in: users.map(x => x._id) } };
console.log(query);

или предполагая, что ключи могут отличаться:

    const users = [{_id: "019e1c71"}, {_id2: "19e1c72a"}, {_id3: "1b215900"}];

    let query = { $or: users }
    console.log(query);
1 голос
/ 16 марта 2020

Оператор $or принимает массив документов, который является именно тем, что у вас есть.

const users = [{_id: "019e1c71"}, {_id: "19e1c72a"}, {_id: "1b215900"}];
User.find({$or: users});
0 голосов
/ 15 марта 2020

Вы можете использовать findOne() для поиска запрошенного идентификатора, например:

User.findOne({_id: '019e1c71'})

docs.mongodb.com - findOne ()

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