71

たとえば、MongoDB に次のデータがあります。

{ "_id" : ObjectId("524091f99c49c4c3f66b0e46"), "hour" : 10, "incoming", 100}
{ "_id" : ObjectId("5240a045dbeff33c7333aa51"), "hour" : 11, "incoming", 200}
{ "_id" : ObjectId("5240a2ecda0d37f35c618aca"), "hour" : 12, "incoming", 300}

ここで、「11 - 12 の間の着信数を合計する」(結果は 500 になるはずです) というクエリを実行したいのですが、Mongo Shell を使用してこれを行うにはどうすればよいですか?

4

2 に答える 2

117

lovet が示唆したように、集約フレームワークは進むべき道です。クエリは次のようになります。

db.CollectionNameGoesHere.aggregate({ $match: {
    $and: [
        { hour: { $gte: 11 } },
        { hour: { $lte: 12 } }
    ]
} },
{ $group: { _id : null, sum : { $sum: "$incoming" } } });

次のように、パイプラインの最後に $project 演算子を追加することで、結果のドキュメントに合計のみが含まれるように整形することもできます。

{ $project: { _id: 0, sum: 1 } }
于 2013-09-24T15:27:32.330 に答える