MongoDB中聚合($ match)和find之间的区别?

use*_*313 26 mongodb

$match在聚合函数中使用的运算符和findMongodb中的常规运算符之间有什么区别?

为什么find函数不允许重命名像聚合函数这样的字段名?例如,在聚合中,我们可以传递以下字符串:

{ "$project" : { "OrderNumber" : "$PurchaseOrder.OrderNumber" , "ShipDate" : "$PurchaseOrder.ShipDate"}}
Run Code Online (Sandbox Code Playgroud)

然而,find不允许这样做.

为什么聚合输出不会作为DBCursor或List返回?还有为什么我们不能计算返回的文件?

谢谢.

vin*_*ker 28

为什么聚合输出不会作为DBCursor或List返回?

创建聚合框架是为了解决否则需要map-reduce的简单问题.

此框架通常用于计算需要将完整数据库作为输入而少量文档作为输出的数据.

在聚合函数中使用的$ match运算符和Mongodb中的常规查找之间有什么区别?

如你所说,其中一个差异就是回报类型.查找操作输出返回为DBCursor.

其他差异:

还有为什么我们不能计算返回的文件?

您可以.只计算结果数组中的元素数量或将以下命令添加到管道的末尾:

{$group: {_id: null, count: {$sum: 1}}}
Run Code Online (Sandbox Code Playgroud)

为什么find函数不允许重命名像聚合函数这样的字段名?

MongoDB很年轻,功能仍在继续.也许在未来的版本中我们将能够做到这一点.重命名字段在聚合中比在find中更重要.

编辑(2014/02/26):

MongoDB 2.6聚合操作将返回一个游标.

编辑(2014/04/09):

MongoDB 2.6发布了预测的聚合更改.