製品在庫ログから私はMongoDBコレクションを作成しました。関連する項目は、SKU、在庫、日付です。製品在庫が更新されるたびに、総在庫と新しいエントリがあります。MongoDBクエリグループとサブグループ
skusは2つの部分で構成されています。親パーツ、たとえば 'A'とバリアントまたは子パーツは '1'、 '2'、 '3'などと言います。スキューは次のようになります。 'A2'
私はこのクエリで、日によってグループ化された単一の製品在庫、を照会することができます
[{
$match: {
sku: 'A2'
}
},
{
$group: {
_id: {
year: {$year: '$date'},
day: {$dayOfYear: '$date'}
},
stock: {
$min: '$stock'
},
date: {
$first: '$date'
}
}
},
{
$sort: {
date: 1
}
}]
注:私は毎日のための最低限の株式をしたいです。
しかし、私はすべてのバリエーション(最小)を追加する必要があります。 $ matchオブジェクトを$ groupステージに変更するには:
[{
$match: {
sku: /^A/
}
}
$グループステージで 'サブ'グループを作成するにはどうすればよいですか?
EDIT: 'A1' と一日の 'A2' のいずれかの
{
sku: 'A1',
date: '2015-01-01',
stock: 15
}
{
sku: 'A1',
date: '2015-01-01',
stock: 14
}
{
sku: 'A2',
date: '2015-01-01',
stock: 20
}
二株式:
データは次のようになります。私のクエリ(1日ごとにグループ化されたすべてのスキュー)は、結果として株価が14になる(3つの値のうちの最小値)。しかし、私は結果が34になるように20(A2の場合はmin)プラス14の場合(A1の場合min)
このドキュメントの説明は、コード自体で最もよく理解されていますが、いくつかのサンプルドキュメントと期待される出力は何ですか? – chridam