mongodb - 聚合时如何不一一列出项目中的所有字段?

标签 mongodb mongodb-query

我正在使用 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/

相关文章:

mongodb - 仅检索 MongoDB 集合中对象数组中的查询元素

Node.js 生成随机唯一 id 并通过 Do .. While 循环检查 mongoDB 是否存在

node.js - 如何使用 Node.js 在 MongoDB 中查找记录

mongodb - 如何利用数据库高效修改句子中的单词?

mongodb - 将项目推送到数组并在同一请求中删除

java - 在 Mongo 中插入 JSON

javascript - 从 MongoDB 中删除匹配 "this text"的条目

mongodb - Mongo 中的 $pull 多个对象不起作用

mongodb - 根据数组中嵌入的日期对 MongoDB 中的数据进行排序

Mongodb加入从String到ObjectId的_id字段