sql >> Databáze >  >> NoSQL >> MongoDB

Mongodb Aggregation :Jak vrátit pouze odpovídající prvky pole

Můžete to udělat s agregačním rámcem 2.2. Něco takového;

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",
            },
        },
    ],
})

Nebo by to mohlo být ještě blíže tomu, co hledáte, pokud opravdu chcete pole bez dokumentu;

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. Existuje řešení pro maximální velikost bson MongoDB?

  2. Jak mohu třídit podle více polí v mongodb pomocí Perlu?

  3. Selhání instalace Mongodb při spuštění mongod

  4. Grails mongodb připojení odmítnuto