如何在不包含使用聚合框架的其他字段的情况下排除_id

时间:2013-10-07 14:44:21

标签: mongodb aggregation-framework

我想获得没有_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

有任何想法解决这个问题吗?

1 个答案:

答案 0 :(得分:8)

使用聚合时,您必须明确include/exclude fields。因此,您需要列出所需的所有字段。它不等于find。所以,你可能会:

db.sample.aggregate(
    { $project : {
        _id : 0,
        title : 1             
    }}
);

使用聚合框架还附带了一些您应该注意的limits。它设计用于聚合​​(分组,求和等),因此在投影中有许多字段不是典型的(并且可能导致结果超过允许的最大值,即16MB)。