集約フレームワークで遊んでみましたが、問題があります。先月、データベース内で何人が何かを購入したかを知る必要があります。
それを行うには、これを使用します:
db.account.aggregate([
{$project : {civility : 1, 'purchase.date' : 1 }},
{$match: {civility : 1 ,'purchase.date': {$gte: new Date('02/02/2013'), $lt: new Date('02/03/2013')} }},
{$unwind: '$purchase'},
{$match: {civility : 1 ,'purchase.date': {$gte: new Date('02/02/2013'), $lt: new Date('02/03/2013')} }},
{$group: {_id: '$_id', total_buy : {$sum : 1}}},
{$match: {total_buy: {$gte: 2}}},
{$group: {_id: null, total_buyer : {$sum : 1}}}
])
私はこの応答を持っています
{
"result" : [
{
"_id" : null,
"total_buyer" : 4443
}
],
"ok" : 1
}
私が使用する日付の範囲が小さいため、このクエリは機能しますが、日付の範囲で同じクエリを使用すると、次のように大きくなります:
db.account.aggregate([
{$project : {civility : 1, 'purchase.date' : 1 }},
{$match: {civility : 1 ,'purchase.date': {$gte: new Date('02/01/2013'), $lt: new Date('03/01/2013')} }},
{$unwind: '$purchase'},
{$match: {civility : 1 ,'purchase.date': {$gte: new Date('02/01/2013'), $lt: new Date('03/01/2013')} }},
{$group: {_id: '$_id', total_buy : {$sum : 1}}},
{$match: {total_buy: {$gte: 2}}},
{$group: {_id: null, total_buyer : {$sum : 1}}}
])
私はこれを持っています:
{
"errmsg" : "exception: sharded pipeline failed on shard shard0000: { errmsg: \"exception: aggregation result exceeds maximum document size (16MB)\", code: 16389, ok: 0.0 }",
"code" : 16390,
"ok" : 0
}
私が間違っていることがありますか、それとも私がする必要があることをすることができませんか?
前もって感謝します