有没有办法在MongoDB中限制aggregate
查询中的字段?
使用find()
,您可以设置您不想0
限制所有内容的字段,但是使用update
,您可以使用$unset
命令(这实际上并不相同,但很接近),但是似乎没有使用aggregate
命令来完成此操作的方法。
当我尝试设置为0
时,我得到:
"errmsg“:”异常:当前唯一支持排除的字段是顶级_id字段“
换句话说,根据http://docs.mongodb.org/manual/tutorial/project-fields-from-query-results/中的示例,我希望返回文档中除某些字段之外的所有字段。示例:
db.inventory.find( { type: 'food' }, { type:0 } )
似乎使用aggregate
命令,我只能告诉它要包括什么,而不能告诉它要排除什么
发布于 2015-04-20 03:16:01
您可以在管道中使用$project
阶段来指定要包含在输出中的字段:
{$project: {a: 1, b: 1, _id: 0}}
用于问题更新的更新:
不幸的是,字段排除只支持_id
,所以你不能直接排除type
,而必须包含你想要的所有字段。
发布于 2019-06-10 00:45:01
启动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"]
是要丢弃的字段列表。
https://stackoverflow.com/questions/29734511
复制相似问题