Mic*_*zov 1 mongodb aggregation-framework
我需要从MongoDB中的集合中获取文档.单个文档如下所示:
{
name : "John Doe",
address : "Some cool address",
value1 : 2,
value2 : 3,
value3 : 5
}
Run Code Online (Sandbox Code Playgroud)
我需要检索所有字段+按等于的数字降序排序的文档value1 + value2 + value3.
我找到的解决方案(不完整,因为它不检索所有字段)看起来像这样:
db.someCollection.aggregate(
{
$project: {
sum: { $add: [ "$value1", "$value2", "$value3" ] }
},
$sort: {
sum: -1
}
}
)
Run Code Online (Sandbox Code Playgroud)
就像我说的,这只返回sum不是我想要的字段.
编辑:文件实际上有点大,所以我不想使用伪解像
$project: {
name: 1,
address: 1,
...
}
Run Code Online (Sandbox Code Playgroud)
即我想要一些通用的可重复使用的解决方案,而不是特定于案例的解决方案
您可以使用$$ ROOT来引用根文档.将此文档的所有字段保留在一个字段中,然后尝试获取它(取决于您的客户端系统:Java,C++,...)
db.someCollection.aggregate(
{
$project: {
sum: { $add: [ "$value1", "$value2", "$value3" ] },
document: "$$ROOT"
},
$sort: {
sum: -1
}
}
)
Run Code Online (Sandbox Code Playgroud)