2016-04-19 3 views
0

я знаю, что я могу найти в мангустов, какMongoose найти все элементы с _id из массива, которые существуют

schema.find({ '_id' : { $in: [1,2,3]} }, function(err,data){}); 

моя проблема в том, что, например, объекты с _id 1 и 3 существуют, но нет объекта с _id 2. Таким образом, метод find не удастся. Есть ли способ найти все возможные объекты, игнорирующие inavlid id_s?

+0

schema.find ({'_id': {$ in: [ObjectId (1), ObjectId (2), ObjectId (3)]}}, function (err, data) {}); –

+0

Оператор '$ in' - это в основном сокращенное условие« ИЛИ ». Таким образом, все это говорит о том, что * «найти все документы, где _id является« одним из этих значений »*. Если его там нет, он не выбран. Здесь нет «неудачи». Если, конечно, вы действительно не хотите возвращать результаты, если не все перечисленные значения присутствуют. Какая другая логика касается того, как возникает ваш вопрос. –

ответ

1

Согласно MongoDB documentation, ваш запрос не отменялись, где не существует никаких документов с идентификатором 2.

Документация, гласит:

в $ в операторе выбирает документы, где значение а поле равно любому значению в указанном массиве.

+0

Правильно, проблема заключалась в том, что один идентификатор объекта не мог быть проанализирован. – choosyg

+0

Правильно, проблема заключалась в том, что один идентификатор объекта не мог быть проанализирован. – choosyg

0

Монго сначала проверяет длину _id, и она должна быть 24 символов,

, если один из членов массива меньше 24 символов это будет ошибка длины показывает вам, например:

234324533423423423423424 _id не существует в БД

db.users.find({ '_id' :{ $in:[ObjectId("56d461517a2f02941bfb967a"),ObjectId("56d461517a2f02941bfb967e"),ObjectId("234324533423423423423424")]}}, function(err,data){}) 

будет работать идеально, чтобы показать первые 2 участника!

Смежные вопросы