我在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翻译..
非常感谢!
答案 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' }
]
)
{" _id" :" abc"," count" :2} {" _id" :" def"," count" :2}