我想定义一个$ project聚合阶段,我可以指示它添加一个新字段并包含所有现有字段,而不必列出所有现有字段.
我的文档看起来像这样,有很多字段:
{
obj: {
obj_field1: "hi",
obj_field2: "hi2"
},
field1: "a",
field2: "b",
...
field26: "z"
}
Run Code Online (Sandbox Code Playgroud)
我想做一个像这样的聚合操作:
[
{
$project: {
custom_field: "$obj.obj_field1",
//the next part is that I don't want to do
field1: 1,
field2: 1,
...
field26: 1
}
},
... //group, match, and whatever...
]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我可以使用类似"包含所有字段"的关键字,还是以其他方式避免必须单独列出每个字段?
我正在使用Mongo 3.2.14
我有一个mongo集合,看起来像这样:
{
'_id':...
'field1':...
'field2':...
'field3':...
etc...
}
Run Code Online (Sandbox Code Playgroud)
我想这样汇总:
db.collection.aggregate{
'$match':{},
'$project':{
'field1':1,
'field2':1,
'field3':1,
etc...(all fields)
}
}
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以将项目中的所有字段都包含在内而又不逐一列出每个字段?(我大约有30个领域,并且还在不断发展……)
我在这里找到有关此信息:
但是,我使用的是mongo 3.2.14,不需要创建新字段,因此,我认为我不能使用$ addFields。但是,如果可以的话,有人可以告诉我如何使用它吗?