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

Fur*_*rge 5 mongodb aggregation-framework

有没有办法限制aggregateMongoDB 中的查询字段?使用a find()你可以设置字段,你不想0限制所有的东西,但是update你和你使用$unset命令(这不是真的相同,但关闭),但似乎没有办法做到这一点用aggregate命令.当我试着去0,我明白了

db.inventory.find( { type: 'food' }, { type:0 } )
Run Code Online (Sandbox Code Playgroud)

UPDATE

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

db.inventory.find( { type: 'food' }, { type:0 } )
Run Code Online (Sandbox Code Playgroud)

aggregate命令中似乎我只能告诉它要包含什么,而不是要排除什么

Joh*_*yHK 7

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

{$project: {a: 1, b: 1, _id: 0}}
Run Code Online (Sandbox Code Playgroud)

更新问题更新:

遗憾的是,仅支持字段排除,_id因此您无法直接排除type,而是必须包含您想要的所有字段.

  • 问题在于我不知道所有字段是什么.每个文档略有不同,但有些字段我不想返回,比如说SSN等.看起来奇怪的是你几乎可以在db中的每个命令中执行此操作,但是对于聚合,它们会破坏功能. (2认同)