Mongodb execute multiple queries in one round trip

Viewed 15995
1 Answers

Yes, there is something similar in MongoDB. Using Aggregation Framework you can define multiple aggregation pipelines inside $facet stage.

Try:

db.col.save({a:1})
db.col.save({a:2})


db.col.aggregate([
    {
        $facet: {
            query1: [ { $match: { a:1 } }, { $project: { _id: 0 } } ],
            query2: [ { $match: { a:2 } }, { $project: { _id: 0 } } ],
        }
    }
])

which prints:

{ "query1" : [ { "a" : 1 } ], "query2" : [ { "a" : 2 } ] }

Using $facet you have to keep in mind that single BSON document can't exceed 16 MB size. More about aggregation limitations here

Related