sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongodb Aggregation:Sådan returneres kun matchende elementer i en matrix

Du kunne gøre dette med 2.2 aggregeringsrammerne. Noget som dette;

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

Eller det kan være endnu tættere på det, du leder efter, hvis du virkelig vil have arrayet uden dokumentet;

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. Holder arrays gemt i MongoDB deres rækkefølge?

  2. hvordan kan jeg oprette forbindelse til en ekstern mongo-server fra Mac OS-terminal

  3. Sådan gentager du objekter i Collection Meteor Mongo

  4. Sådan MongoDB aggregering i Node.js