Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 有没有办法限制聚合查询中的字段?_Mongodb_Aggregation Framework - Fatal编程技术网

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

Mongodb 有没有办法限制聚合查询中的字段?,mongodb,aggregation-framework,Mongodb,Aggregation Framework,有没有办法限制MongoDB中聚合查询中的字段 使用find()可以设置不想0限制一切的字段,而使用updates可以使用$unset命令(实际上并不相同,但很接近),但似乎没有办法使用aggregate命令 当我尝试设置为0时,我得到: “errmsg”:“异常:顶级_id字段是当前唯一支持排除的字段” 为了重新表述这一点,基于中的示例,我想返回文档中的所有字段,但某些字段除外。例如: db.inventory.find( { type: 'food' }, { type:0 } ) 使用a

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

使用
find()
可以设置不想
0
限制一切的字段,而使用
update
s可以使用
$unset
命令(实际上并不相同,但很接近),但似乎没有办法使用
aggregate
命令

当我尝试设置为
0
时,我得到:

“errmsg”:“异常:顶级_id字段是当前唯一支持排除的字段”

为了重新表述这一点,基于中的示例,我想返回文档中的所有字段,但某些字段除外。例如:

db.inventory.find( { type: 'food' }, { type:0 } )
使用
aggregate
命令,我似乎只能告诉它要包含什么,而不能告诉它要排除什么。您可以使用管道中的一个阶段来指定要包含在输出中的字段:

{$project: {a: 1, b: 1, _id: 0}}
问题更新的更新:


不幸的是,只有
\u id
才支持字段排除,因此您不能直接排除
类型
,而是必须包括您想要的所有字段。

启动
Mongo 4.2
,如果您的投影阶段仅包括丢弃字段,则可以使用
$project
的别名:


其中,
[“\u id”,“b”]
是要丢弃的字段列表。

如果您可以向我们显示聚合查询、示例文档和预期输出,这将非常有用。您还可以使用不同的名称显示{u id:0,PageId:“$\u id”}问题是我不知道所有字段都是什么。每个文档都略有不同,但有些字段我不想返回,比如SSN之类的。奇怪的是,你几乎可以用db中的每一个命令来实现这一点,但是对于聚合来说,它们削弱了功能。
// { 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 }