仅删除一个字段

Pau*_*aul 6 mongodb mongodb-query aggregation-framework

这是一个非常简单的问题,只是有一个非常糟糕的大脑冻结.在我的聚合中,我只想使用$ project删除'_id'字段,但返回其他所有内容.但是我得到了

"$ projection需要至少一个输出字段"

我想会是这样的:

db.coll.aggregate( [ { $match .... }, { $project: { _id: 0 }}])
Run Code Online (Sandbox Code Playgroud)

谢谢

Pra*_*yal 8

v4.2 开始,您可以使用$unset聚合运算符来删除单个或多个字段。您还可以使用点表示法从嵌入的文档中排除一个或多个字段。

删除单个字段:

db.coll.aggregate([ { $unset: "_id" } ])
Run Code Online (Sandbox Code Playgroud)

删除多个字段:

db.coll.aggregate([ { $unset: [ "_id", "name" ] } ])
Run Code Online (Sandbox Code Playgroud)

要删除嵌入的字段:

db.coll.aggregate([
   { $unset: [ "_id", "author.name" ] }
])
Run Code Online (Sandbox Code Playgroud)


Wir*_*rie 6

当通过各种管道操作或通过使用聚合时,您需要显式包含字段$project.除非字段名称明确定义,否则目前无法返回所有字段:

$project : {
   _id : 0,
   "Name" : 1,
   "Address" : 1
}
Run Code Online (Sandbox Code Playgroud)

您可以_id使用您使用的技术排除使用,如上所示.