mongodb / mongoose findMany – найти все документы с идентификаторами, перечисленными в массиве

У меня есть массив _ids, и я хочу получить все документы соответственно, что это лучший способ сделать это?

Что-то вроде …

// doesn't work ... of course ... model.find({ '_id' : [ '4ed3ede8844f0f351100000c', '4ed3f117a844e0471100000d', '4ed3f18132f50c491100000e' ] }, function(err, docs){ console.log(docs); }); 

Массив может содержать сотни _ids.

3 Solutions collect form web for “mongodb / mongoose findMany – найти все документы с идентификаторами, перечисленными в массиве”

Функция find в мангусте – это полный запрос к mongoDB. Это означает, что вы можете использовать удобное предложение mongoDB $in , которое работает точно так же, как и версия SQL.

 model.find({ '_id': { $in: [ mongoose.Types.ObjectId('4ed3ede8844f0f351100000c'), mongoose.Types.ObjectId('4ed3f117a844e0471100000d'), mongoose.Types.ObjectId('4ed3f18132f50c491100000e') ]} }, function(err, docs){ console.log(docs); }); 

Этот метод будет хорошо работать даже для массивов, содержащих десятки тысяч идентификаторов. (См. « Эффективное определение владельца записи» )

Я бы рекомендовал, чтобы кто-нибудь, кто работал с mongoDB прочитал раздел « Расширенные запросы » превосходных официальных документов mongoDB

Используйте этот формат запроса

 let arr = _categories.map(ele => new mongoose.Types.ObjectId(ele.id)); Item.find({ vendorId: mongoose.Types.ObjectId(_vendorId) , status:'Active'}) .where('category') .in(arr) .exec(); 

И node.js, и MongoChef заставляют меня конвертировать в ObjectId. Это то, что я использую, чтобы захватить список пользователей из БД и получить несколько свойств. Обратите внимание на преобразование типа в строке 8.

 // this will complement the list with userName and userPhotoUrl based on userId field in each item augmentUserInfo = function(list, callback){ var userIds = []; var users = []; // shortcut to find them faster afterwards for (l in list) { // first build the search array var o = list[l]; if (o.userId) { userIds.push( new mongoose.Types.ObjectId( o.userId ) ); // for the Mongo query users[o.userId] = o; // to find the user quickly afterwards } } db.collection("users").find( {_id: {$in: userIds}} ).each(function(err, user) { if (err) callback( err, list); else { if (user && user._id) { users[user._id].userName = user.fName; users[user._id].userPhotoUrl = user.userPhotoUrl; } else { // end of list callback( null, list ); } } }); } 
  • Node.js настраивает конфигурацию, специфичную для среды, которая будет использоваться с everyauth
  • Как обмениваться сеансами с Socket.IO 1.x и Express 4.x?
  • Как установить тайм-аут на http.request () в узле?
  • Ajax vs Socket.io
  • Каков пример простейшего возможного примера Socket.io?
  • Как настроить несколько поддоменов в Express.js или Connect.js
  • Схема CRUD, переопределяющая в sails.js
  • Как отлаживать «Ошибка: вызвать ENOENT» на node.js?
  • Внесение изменений в несколько записей на основе изменения одной записи с помощью SQL
  • Как включить скрипты, расположенные внутри папки node_modules?
  • Получить URL-адрес загрузки из файла, загруженного с помощью облачных функций для Firebase
  • Interesting Posts

    Отключить удаленное выключение на окнах 8.1

    Почему последовательная передача данных происходит быстрее, чем параллельно?

    Домашняя сеть с двумя маршрутизаторами

    Ошибки компоновщика GCC C ++: Неопределенная ссылка на «vtable для XXX», Неопределенная ссылка на «ClassName :: ClassName ()»

    Как указать код выхода консольного приложения в .NET?

    Как установить папку в качестве виртуального CD / DVD-привода?

    Как установить MBR внешнего жесткого диска?

    Есть ли способ сохранить сводку кода в Notepad ++?

    Как получить такой профиль, как пол из google signin в Android?

    Скрыть текст с помощью css

    (MongoDB Java) $ push в массив

    Как добавить связанную исходную папку в Android Studio?

    Как сделать «Файлы для хранения без сжатия» в 7-zip?

    responsejs, дающий ошибку Uncaught TypeError: Супер выражение должно быть либо null, либо функцией, а не неопределенной

    В Java разница между пакетом private, public, protected и private

    Давайте будем гением компьютера.