difference between aggregate ($match) and find, in MongoDB?

后端 未结 2 1494
死守一世寂寞
死守一世寂寞 2020-12-28 15:37

What is the difference between the $match operator used inside the aggregate function and the regular find in Mongodb?

Why doesn\'t the

2条回答
  •  旧巷少年郎
    2020-12-28 16:02

    Why does not the aggregate output return as a DBCursor or a List?

    The aggregation framework was created to solve easy problems that otherwise would require map-reduce.

    This framework is commonly used to compute data that requires the full db as input and few document as output.

    What is the difference between the $match operator used inside the aggregate function and the regular find in Mongodb?

    One of differences, like you stated, is the return type. Find operations output return as a DBCursor.

    Other differences:

    • Aggregation result must be under 16MB. If you are using shards, the full data must be collected in a single point after the first $group or $sort.
    • $match only purpose is to improve aggregation's power, but it has some other uses, like improve the aggregation performance.

    and also why can't we get a count of the documents that are returned?

    You can. Just count the number of elements in the resulting array or add the following command to the end of the pipe:

    {$group: {_id: null, count: {$sum: 1}}}
    

    Why doesn't the find function allow renaming the field names like the aggregate function?

    MongoDB is young and features are still coming. Maybe in a future version we'll be able to do that. Renaming fields is more critical in aggregation than in find.

    EDIT (2014/02/26):

    MongoDB 2.6 aggregation operations will return a cursor.

    EDIT (2014/04/09):

    MongoDB 2.6 was released with the predicted aggregation changes.

提交回复
热议问题