我正在使用 Mongo 3.2.14
我有一个如下所示的 mongo 集合:
{
'_id':...
'field1':...
'field2':...
'field3':...
etc...
}
我想这样聚合:
db.collection.aggregate{
'$match':{},
'$project':{
'field1':1,
'field2':1,
'field3':1,
etc...(all fields)
}
}
有没有一种方法可以包含项目中的所有字段,而无需一一列出每个字段? (我有大约 30 个领域,并且还在不断增长……)
我在这里找到了相关信息:
MongoDB $project: Retain previous pipeline fields
Include all existing fields and add new fields to document
how to not write every field one by one in project
但是,我使用的是 mongo 3.2.14,我不需要创建新字段,所以我认为我不能使用 $addFields。但是,如果可以的话,有人可以告诉我如何使用它吗?
最佳答案
基本上,如果您希望将文档的所有属性传递到下一个管道,您可以跳过 $project 管道。但是如果你想要除“_id”值之外的所有属性,那么你可以通过
{ $project: { _id: 0 } }
这将返回除 _id 之外的所有值。
如果您有任何希望展平的嵌入式列表或嵌套,您可以使用 $unwind 管道
关于mongodb - 聚合时如何不一一列出项目中的所有字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45684994/