有没有办法限制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}}命令似乎只能告诉它包含的内容,而不是排除
的内容答案 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"]
是要丢弃的字段列表。