0

我有Record看起来像这样的模型:

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

我想按位置GROUP记录收集并为每个所有者计算它们。换句话说,我想计算每个所有者的 state = 'some_string' 的所有记录(在记录中指定为)。我怎么能做到这一点?我在谷歌中搜索,但找不到任何我能理解的东西——据我所知,map reduce 将结果放到新集合中,我不想这样做。我在猫鼬文档中找不到任何信息。其他示例在查询中包含一些奇怪的关键字等。任何人都可以为我提供这个问题的良好工作示例吗?我想这样做应该很简单......我发现有方法方法但找不到如何使用它。owner_idRecord.state = 'some_string'owner_idmongoose groupmongoose map/reduce$projectModel.agregate(...)

我使用猫鼬 3.6.15。

4

1 回答 1

1

aggregate使用和 Mongoose执行此操作:

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可以在这里找到。一开始可能会令人生畏,但花一个小时左右的时间阅读文档并理解示例,您就会很快掌握它的窍门。

于 2013-09-07T13:39:27.297 回答