MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongoose намира документи, ако масивът съдържа стойност

Има няколко начина да постигнете това. Първият е чрез $elemMatch оператор:

const docs = await Documents.find({category: { $elemMatch: {$eq: 'yourCategory'} }});
// you may need to convert 'yourCategory' to ObjectId

Вторият е от $in или $all оператори:

const docs = await Documents.find({category: { $in: [yourCategory] }});

или

const docs = await Documents.find({category: { $all: [yourCategory] }});
// you can give more categories with these two approaches 
//and again you may need to convert yourCategory to ObjectId

$in е като ИЛИ и $all като И. За повече подробности вижте тази връзка:https://docs.mongodb.com /manual/reference/operator/query/all/

Третият е от aggregate() функция:

const docs = await Documents.aggregate([
    { $unwind: '$category' },
    { $match: { 'category': mongoose.Types.ObjectId(yourCategory) } }
]};

с aggregate() получавате само един идентификатор на категория във вашия масив от категории.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Средни агрегирани заявки в Meteor

  2. NodeJS + Mongo:Вмъкнете, ако не съществува, в противен случай - актуализирайте

  3. Опитвам се да получа списък с колекции от mongoose

  4. Как да отпечатате минимален резултат в MongoDB

  5. Mongodb Atlas:не е упълномощен от администратора да изпълни команда