Mongodb显示每个条目的不同条目数

时间:2016-12-16 18:16:45

标签: javascript node.js mongodb

我希望能够列出以下内容

数据

/* 1 */
{
    "name" : "Dash"
}
/* 2 */
{
    "name" : "Dash"
}
/* 3 */
{
    "name" : "Pink"
}
/* 4 */
{
    "name" : "Pink"
}
/* 1 */
{
    "name" : "Jamie"
}

db.getCollection('players').distinct('name')目前可以获得的内容:

/* 1 */
[
    "Dash",
    "Pink",
    "Jamie"
]

我想要的是什么:

/* 1 */
[
    {
       name: "Dash",
       number: 2
    }
    {
       name: "Pink",
       number: 2
    }
    {
       name: "Jamie",
       number: 1
    }
]

这可以用mongo吗?

1 个答案:

答案 0 :(得分:1)

使用MongoDB的聚合命令肯定是可行的。您正在寻找的是$ group聚合(https://docs.mongodb.com/v3.2/reference/operator/aggregation/group/)。

从这些分组中,您可以将名称设置为_id,并使用$sum操作来包含计数。 shell命令的示例如下:

db.players.aggregate([{
    $group : {
       _id : { name: "$name" },
       number: { $sum: 1 }
    }
}])

这将根据需要返回分组。有关更多信息,请单击我给出的链接,然后查看示例:)欢呼