sort objects fields buscar array and mongodb node.js mongoose

mongodb - objects - mongoose select fields



mongodb/mongoose findMany-encuentre todos los documentos con los ID listados en el conjunto (3)

La función de find en mangosta es una consulta completa a mongoDB. Esto significa que puede usar la práctica cláusula mongoDB $in , que funciona igual que la versión SQL de la misma.

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

Este método funcionará bien incluso para matrices que contienen decenas de miles de ID. (Consulte Determinación eficiente del propietario de un registro )

Recomendaría que cualquier persona que trabaje con mongoDB lea la sección de Consultas avanzadas de los excelentes documentos oficiales de mongoDB.

Tengo una serie de _ids y quiero obtener todos los documentos en consecuencia, ¿cuál es la mejor manera de hacerlo?

Algo como ...

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

La matriz puede contener cientos de _ids.


Tanto node.js como MongoChef me obligan a convertir a ObjectId. Esto es lo que uso para obtener una lista de usuarios de la BD y obtener algunas propiedades. Tenga en cuenta la conversión de tipo en la línea 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 ); } } }); }


Utiliza este formato de consulta

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();