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

Как да извлека всички съвпадащи елементи, присъстващи в масива в Mongo DB?

Както каза JohnnyHK, отговорът в MongoDB:изберете съвпадащи елементи от подколекция го обяснява добре.

Във вашия случай агрегатът ще изглежда така:

(забележка:първото съвпадение не е строго необходимо, но помага по отношение на производителността (може да използва индекс) и използването на паметта ($unwind при ограничен набор)

> db.xx.aggregate([
...      // find the relevant documents in the collection
...      // uses index, if defined on documents.x
...      { $match: { documents: { $elemMatch: { "x": 1 } } } }, 
...      // flatten array documennts
...      { $unwind : "$documents" },
...      // match for elements, "documents" is no longer an array
...      { $match: { "documents.x" : 1 } },
...      // re-create documents array
...      { $group : { _id : "$_id", documents : { $addToSet : "$documents" } }}
... ]);
{
    "result" : [
        {
            "_id" : ObjectId("515e2e6657a0887a97cc8d1a"),
            "documents" : [
                {
                    "x" : 1,
                    "y" : 3
                },
                {
                    "x" : 1,
                    "y" : 2
                }
            ]
        }
    ],
    "ok" : 1
}

За повече информация относно aggregate() вижте http://docs.mongodb.org/manual /applications/aggregation/




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mapreduce в mongodb

  2. Актуализиране на вложен запис в масив mongodb, когато не знаете индекса на документа

  3. Strapi:отстраняване на грешки ⛔️ Сървърът не успя да стартира правилно

  4. Сортиране на записи по начин, така че само записите, които съответстват на идентификатор, да са първи?

  5. Има ли ограничение на дължината на стойностите на полетата в mongo заявките?