我想将计算表达式推送到数组而不是值本身作为$group
操作的一部分。MongoDB可以做到这一点吗?
例如,如果我有一个以c
这样的文档命名的集合:
{ "k" : 1, "v" : true }
{ "k" : 1, "v" : true }
{ "k" : 1, "v" : false }
{ "k" : 1, "v" : true }
{ "k" : 1, "v" : false }
然后我可以进行这样的聚合来获取v
数组中的所有值:
db.c.aggregate({$group: {_id:'$k', vals: {$push: '$v'}}})
{
"result" : [
{
"_id" : 1,
"vals" : [
true,
true,
false,
true,
false
]
}
],
"ok" : 1
}
但是,如果我想将它们更改为,比如说,而不是实际值和值,该true
怎么办?也许是这样的:false
'red'
'green'
db.c.aggregate({$group: {_id:'$k', vals: {$push: '$v' ? 'red' : 'green'}}})
但是,唉,这只是输出 all 'red'
。是否可以在$push
表达式中计算任意值?