有没有办法限制MongoDB中聚合查询中的字段

时间:2015-04-19 19:08:11

标签: mongodb aggregation-framework

有没有办法限制MongoDB中aggregate个查询中的字段?使用find(),您可以设置您不希望0限制所有内容的字段,并使用update$unset命令使用aggregate命令(不是{&1}} 39; t真的一样,但很接近),但似乎没有办法用0命令来做到这一点。当我尝试设置为"errmsg" : "exception: The top-level _id field is the only field currently supported for exclusion" 时,我得到了

db.inventory.find( { type: 'food' }, { type:0 } )

更新

显然我的问题还不够清楚。让我重新陈述一下。要从http://docs.mongodb.org/manual/tutorial/project-fields-from-query-results/窃取示例,我想返回文档中的所有字段,除了某些字段。例如:

aggregate

{{1}}命令似乎只能告诉它包含的内容,而不是排除

的内容

2 个答案:

答案 0 :(得分:7)

您可以在管道中使用$project阶段来指定要包含在输出中的字段:

{$project: {a: 1, b: 1, _id: 0}}

更新问题更新:

不幸的是,只有[{1}}支持字段排除,因此您无法直接排除_id,而是必须包含您想要的所有字段。

答案 1 :(得分:0)

Mongo 4.2开始,如果您的投影阶段仅包含丢弃字段,则可以使用$project的别名$unset

// { a: 1, b: 2, c: 3 },
// { a: 4, b: 5, c: 6 }
db.collection.aggregate({ $unset: ["_id", "b"] })
// { a: 1, c: 3 }
// { a: 4, c: 6 }

其中["_id", "b"]是要丢弃的字段列表。