による凝集体:フィルター、私は次のクエリを実行した文字列の長さ
db.Indiv2.aggregate(
{$unwind: '$conso'},
{$group: {_id: {conso:'$conso.nom_commercial', region:"$region"}, sum:
{$sum: 1}}},
{$sort : {sum : -1}},
{$group: {
_id: "$_id.region",
"conso": {
$first: "$_id.conso"
},
"sum": {
$first: "$sum"
},
}},
{$sort : {_id : 1}}
);
次の形式で地域別の最高消費された食物を返した:しかし
{
"_id" : {
"conso" : "x",
"region" : 1
},
"sum" : 73226.0
},
{
"_id" : {
"conso" : "x",
"region" : 8
},
"sum" : 25683.0
},
{
"_id" : {
"conso" : "grandlait demi �cr�m� uht",
"region" : 1
},
"sum" : 251.0
}
を、食品の多くがそう名前を持たない。そのようなアイテムは "x"(上記の例)という名前です。このような項目を除外するクエリをフィルタしたいと思います。私は長さが2文字以下の文字列をフィルタリングするか、文字列 "x"をフィルタリングするフィルタに相当するものを探しています。
が試してみてください:
db.collection.aggregate([
//previous aggregations
{
"$redact": {
"$cond": [
{ "$gt": [ { "$strLenCP": "$_id.conso" }, 2] },
"$$KEEP",
"$$PRUNE"
]
}
}
])
[編集]リンクを使用して、 'Indiv2'コレクションのサンプル文書と期待される出力を表示できますか? – chridam