操作の一部として、値自体ではなく、計算された式を配列にプッシュしたいと思い$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
and値の代わりに、たとえばandfalse
に変更したい場合はどうでしょうか? おそらく次のようなものです:'red'
'green'
db.c.aggregate({$group: {_id:'$k', vals: {$push: '$v' ? 'red' : 'green'}}})
しかし、残念ながら、これは all を出力するだけ'red'
です。式で任意の値を計算することは可能$push
ですか?