我想获得没有_id字段的聚合管道的结果。我知道如果你明确提供其他字段作为投影的输出,这是可能的。但是,¿我怎样才能在查找电话中模仿$ projec?
这就是我想要的(明确包含无字段):
db.col.find({},{_id:0})
但是在聚合框架中似乎是不可能的:
db.col.aggregate([{'$project': {_id:0}}])
Error: Printing Stack Trace
at printStackTrace (src/mongo/shell/utils.js:37:15)
at DBCollection.aggregate (src/mongo/shell/collection.js:927:9)
at (shell):1:11
2013-10-07T16:36:09.273+0200 aggregate failed: {
"errmsg" : "exception: $projection requires at least one output field",
"code" : 16403,
"ok" : 0
} at src/mongo/shell/collection.js:928
有任何想法解决这个问题吗?
答案 0 :(得分:8)
使用聚合时,您必须明确include/exclude fields。因此,您需要列出所需的所有字段。它不等于find
。所以,你可能会:
db.sample.aggregate(
{ $project : {
_id : 0,
title : 1
}}
);
使用聚合框架还附带了一些您应该注意的limits。它设计用于聚合(分组,求和等),因此在投影中有许多字段不是典型的(并且可能导致结果超过允许的最大值,即16MB)。