MongoDbの文書をDescription
フィールドで集約してグループ化したいとします。MongoDbで大文字と小文字を区別しない集約グループを実行する方法は?
次(大文字と小文字を区別デフォルトで)を実行している:私のサンプルデータに
db['Products'].aggregate(
{ $group: {
_id: { 'Description': "$Description" },
count: { $sum: 1 },
docs: { $push: "$_id" }
}},
{ $match: {
count: { $gt : 1 }
}}
);
罰金である、私の1000年の結果を提供します。
db['Products'].aggregate(
{ $group: {
_id: { 'Description': {$toLower: "$Description"} },
count: { $sum: 1 },
docs: { $push: "$_id" }
}},
{ $match: {
count: { $gt : 1 }
}}
);
をしかし、その代わりに、私は1000の以上の結果を得る:
しかし、今、私は、大文字と小文字を区別しないクエリを実行している($toLower
を使用して)は1000の結果に私に以下を与えるべきであることを期待しています。それは正しいことができない、それはできますか?より一般的なエントリはグループ化されて、グループ化の数が少なくなるはずです。
それではおそらく私集計クエリは間違っています!これは私の質問に私をもたらします:
がどのようにMongoDBにグループ化する大文字と小文字を区別しない集約を実行すべきか?
あなたは問題があると思うなら、あなたは、問題を再現するように依頼する必要があります。だから、あなたは '$ toLower'が望む効果を持たない小さなデータセットを表示できるはずです。このプロセスには通常2つの結果があります。 1.再現性のある方法で実際のバグを表示します。 2.実際にハイライトしたことは、あなたが問題ではないと思った問題です。 BTWは本質的にユニットテストと同じコンセプトである[最小限で完全かつ検証可能なサンプルの作成方法](https://stackoverflow.com/help/mcve)を参照してください。再現性が必要です。 –