MongoDB命令计算字段A中的值在字段B中显示具有不同值的次数(或可接受的MySQL命令)

时间:2015-04-16 21:58:46

标签: mongodb distinct

我在MongoDB中有一个集合,假设数据是:

_id | doc_name | SERIAL_NUMBER

1 | a | ABC

2 | b | ABC

3 | a | ABC

4 | a | DEF

5 | c | DEF

6 | b | ABC

我想计算“serial_number”与不同的“doc_name”出现的次数。在这种情况下,它应该是:

ABC | 2

DEF | 2

我希望将结果保存到另一个集合中。

我该怎么做?

MySQL命令也是可以接受的,因为我可以使用MySQL - > MongoDB翻译..

非常感谢!

2 个答案:

答案 0 :(得分:1)

我们的小事情很容易。哥们蒙戈。在$group operator.

中使用$ sum使用mongo聚合

您的示例输出似乎不正确。

abc|4
def|2

a|abc|2
b|abc|2
a|def|1
c|def|1

第一个是

db.collection.aggregate(
     [{$group: {_id: "$serial_number",: {$sum: 1} }]
)

第二个是

db.collection.aggregate(
     [{$group: {_id: {"$serial_number", "$doc_name"},: {$sum: 1} }]
)

然后不理会@nickmilon为$ out运算符(我从未使用过)。凉爽

{ $out : 'output_collection' }
]

答案 1 :(得分:-1)

这是怎么回事? :

db.your_collection.aggregate( 
    [
     {
        $group: {_id: {doc_name:'$doc_name', serial_number:'$serial_number'},
            'count': {'$sum': 1}}
    },

     {
        $group: {_id: '$_id.serial_number',
            'count': {'$sum':  1}}
    },

    { $out : 'output_collection' }
    ]

  • 评论// {$ out:' output_collection' }看到结果:

{" _id" :" abc"," count" :2} {" _id" :" def"," count" :2}