我使用MongoDB聚合进行了以下查询,
db.users.aggregate({$project: {"name":1}})
结果是:
{ "_id" : ObjectId("5d19a17a368e9d89b84269b2"), "name" : "sharon" }
{ "_id" : ObjectId("5d19a186368e9d89b84269b5"), "name" : "paul" }
{ "_id" : ObjectId("5d19a1a7368e9d89b84269b8"), "name" : "paul" }
{ "_id" : ObjectId("5d19a1bb368e9d89b84269bb"), "name" : "sharon" }
{ "_id" : ObjectId("5d19a1ca368e9d89b84269be"), "name" : "paul" }
{ "_id" : ObjectId("5d19a1cf368e9d89b84269c1"), "name" : "paul" }
这实际上等效于
db.users.find({"name":1})
因此,aggregate
支持非聚合操作,我感到困惑和惊讶,
我认为aggregate
与SQL group by
类似,但是上面的查询在SQL中是不可能的
答案 0 :(得分:1)
我认为
GaussianBlur
与aggregate
类似,但是上面的查询在SQL中是不可能的
完全没有。聚合框架定义了许多可能的阶段,您可以将其放入数据中,其中$project
是其中之一。每个阶段都以某种方式修改结果集。您需要考虑进入文档集,出现不同文档集的每个阶段。 Grouping是您在聚合阶段可以执行的操作之一,但是有many more possible transformations。
答案 1 :(得分:1)