计算重复值的出现

Gro*_*ler 3 mongoose mongodb mlab aggregation-framework

如何构造MongooseJS / MongoDB查询以获取特定字段值的重复项/出现项总数?又名:总用文件custIDsome value所有custIDs

我可以在命令行中手动执行此操作:

db.tapwiser.find({"custID" : "12345"}, {}, {}).count();

输出:1

db.tapwiser.find({"custID" : "6789"}, {}, {}).count();

输出:4


我找到了这个资源:

如何对MongoDB集合中字段的不同值求和(使用猫鼬)

但这要求我指定要累加的唯一字段。

在这种情况下,我要遍历所有文档,并对每个文档的出现求和。

sty*_*ane 5

您所要做的就是通过$group您的文档,custID并使用$sum累加器运算符为每个组返回“计数”。

db.tapwiser.aggregate(
    [ 
        { "$group":  { "_id": "$custID", "count": { "$sum": 1 } } }
    ],  function(err, results) {
            // Do something with the results
        }
)
Run Code Online (Sandbox Code Playgroud)

  • @VioletGiraffe,您好,要选择重复项,您需要使用 `$match` 阶段完成聚合管道,即您需要在之后添加 `{$match: {"count": {"$gte": 2}}}` `$group` 阶段。我认为聚合框架是MongoDB的瑞士军刀,你可以做很多事情,比如[一阶导数](/sf/ask/2727035461/ ) (2认同)