我是mongodb的新手。我正在尝试在$project阶段使用计算字段来解析其他字段。
我给你看一个简化的例子。
输入
[
{
a: 5,
b: 3
},
{
a: 2,
b: 1
},
]
代码
db.collection.aggregate([
{
$project: {
_id: 0,
c: {
"$add": [
"$a",
"$b"
]
},
d: {
"$multiply": [
"$a",
"$c"
]
}
}
}
])
输出
[
{
"c": 8,
"d": null
},
{
"c": 3,
"d": null
}
]
结果
我只得到null值,我曾尝试使用$let解决它,但没有结果。解决这个问题的一个简单方法是复制$add操作,但如果它是一个复杂的计算,就像我在真实项目中处理的那样,并且它被复制了很多次,那么它可能会执行不必要的操作。
请帮我
样本播放
db.collection.aggregate([
{
"$project": {
"test": {
"$let": {
"vars": {
"sum": {
$add: [
"$a",
"$b"
]
},
"d": 3
},
"in": {
"c": "$$sum",
"d": {
"$multiply": [
"$$sum",
"$b"
]
}
}
}
}
}
}
])
解释:
通过$let设置和,然后将其用作变量来计算乘法。
游乐场