私はバックエンドとしてmongodbを使用して小さなアプリケーションを実装しています。このアプリケーションでは、サブドキュメントの配列を含むフィールドがドキュメントに含まれるデータ構造があります。
私は次のユースケースを基礎として使用します:http: //docs.mongodb.org/manual/use-cases/inventory-management/
例からわかるように、各ドキュメントには、サブドキュメントの配列であるcartedというフィールドがあります。
{
_id: 42,
last_modified: ISODate("2012-03-09T20:55:36Z"),
status: 'active',
items: [
{ sku: '00e8da9b', qty: 1, item_details: {...} },
{ sku: '0ab42f88', qty: 4, item_details: {...} }
]
}
これは、1つの問題を除いて、私にぴったりです。コレクション全体で各一意のアイテム(一意の識別子キーとして「sku」を使用)をカウントし、各ドキュメントでカウントを1ずつ追加します(同じ「sku」の複数のインスタンス同じドキュメントでも1)がカウントされます。たとえば、この結果が欲しいです:
{sku: '00e8da9b'、doc_count:1}、{sku: '0ab42f88'、doc_count:9}
MongoDBを読んだ後、上記のような複雑なスキーマがある場合に、これを(高速に)行う方法についてかなり混乱しています。他の点では優れたドキュメントが正しいことを理解している場合、そのような操作はおそらく集約フレームワークまたはmap / reduceフレームワークのいずれかを使用して達成される可能性がありますが、ここでいくつかの入力が必要です。
- 構造の複雑さを考えると、私が探している結果を達成するのに適したフレームワークはどれですか?
- 選択したフレームワークから可能な限り最高のパフォーマンスを得るには、どのような種類のインデックスが推奨されますか?