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

Mongodb Aggregation:Как да върнете само съвпадащи елементи от масив

Можете да направите това с рамката за агрегиране 2.2. Нещо подобно;

db.books.runCommand("aggregate", {
    pipeline: [
        {   // find docs that contain Par*
            $match: { "indexTokens" : { "$regex" : "^Par" , "$options" : "i"}},
        },
        {   // create a doc with a single array elemm for each indexToken entry
            $unwind: "$indexTokens" 
        },
        {   // now produce a list of index tokens
            $group: {
                _id: "$indexTokens",
            },
        },
    ],
})

Или това може да е още по-близо до това, което търсите, ако наистина искате масива без документа;

db.books.runCommand("aggregate", {
    pipeline: [
        {   // find docs that contain Par*
            $match: { "indexTokens" : { "$regex" : "^Par" , "$options" : "i"}},
        },
        {   // create a doc with a single array elemm for each indexToken entry
            $unwind: "$indexTokens" 
        },
        {   // now throw out any unwind's that DON'T contain Par*
            $match: { "indexTokens": { "$regex": "^Par", "$options": "i" } },
        },
        {   // now produce the list of index tokens
            $group: {
                _id: null,
                indexTokens: { $push: "$indexTokens" },
            },
        },
    ],
})


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Намиране на различни от колекции в mongodb

  2. Преброяване на съвместни събития с помощта на рамка за агрегиране на Mongo

  3. mongodb - как да намерите и след това да обобщите

  4. Извикването на REST API работи само веднъж

  5. „upsert“ във вграден документ