2016-12-16 53 views
0

不同的条目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?

+0

是可以使用'aggregation','group'和'sum',你会得到你想要的结果 – Yogesh

+1

'db.players.aggregate( [ {$ group:{_id:“$ name”,number:{$ sum:1}}} ] ) – Veeram

回答

1

这对MongoDB的聚合命令来说当然是可行的。您正在寻找的是$组合(https://docs.mongodb.com/v3.2/reference/operator/aggregation/group/)。

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

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

这将根据需要返回分组。欲了解更多信息,请点击我给出的链接,看看例子:)干杯

+0

噢完美,我想知道我现在可以整理吗? '.sort('number')' –

+1

https://docs.mongodb.com/v3.2/reference/operator/aggregation/sort/ –