0

次のようなモデルRecordがあります。

{
    _id: '52278952a4bb5a7415000002',
    owner_id: '52278952a4bb5a7415000001',
    state: 'some_string'
}

GROUPコレクションをowner_idどこで記録Record.state = 'some_string'し、所有者ごとに数えたいと思います。言い換えれば、所有者ごとに state = 'some_string' を持つすべてのレコードをカウントしたい (レコードで として指定owner_id)。どうすればこれを達成できますか? 私はGoogleで検索しましたmongoose groupmongoose map/reduce、理解できるものは何も見つかりませんでした.map reduceは結果を新しいコレクションに入れることを知っているので、これをしたくありません。マングースのドキュメントに情報が見つかりません。他の例には、クエリなどの奇妙なキーワードが含まれています$project。誰かがこの問題の良い例を教えてくれますか? これを行うのは簡単なはずです...メソッドメソッドがあることを知りましたModel.agregate(...)が、それを使用する方法が見つかりません。

私はマングース3.6.15を使用しています。

4

1 に答える 1

1

これをaggregateMongoose で行うには:

Record.aggregate([
    // Filter the docs to just those you want to include
    {$match: {state: 'some_string'}},
    // Group by owner_id and count them per owner
    {$group: {_id: '$owner_id', count: {$sum: 1}}}
], function (err, results) { ... });

ドキュメントはaggregateここにあります。最初は戸惑うかもしれませんが、1 時間ほどかけてドキュメントを読み、例を理解すれば、すぐにコツをつかめるようになります。

于 2013-09-07T13:39:27.297 に答える