Regex 具有计数和条件mongo DB的不同值
我是MongoDB的新手,到目前为止,它似乎在试图改变它的方式,让做简单的事情变得过于复杂 我正在尝试运行下面的MYSQL等效程序Regex 具有计数和条件mongo DB的不同值,regex,mongodb,count,group-by,aggregation-framework,Regex,Mongodb,Count,Group By,Aggregation Framework,我是MongoDB的新手,到目前为止,它似乎在试图改变它的方式,让做简单的事情变得过于复杂 我正在尝试运行下面的MYSQL等效程序 SELECT userid, COUNT(*) FROM userinfo WHERE userdata like '%PC% or userdata like '%wire%' GROUP BY userid 我有mongo版本3.0.4,我正在运行MongoChef。 我试着使用以下类似的方法: db.userinfo.group({ "key": {
SELECT userid, COUNT(*)
FROM userinfo
WHERE userdata like '%PC% or userdata like '%wire%'
GROUP BY userid
我有mongo版本3.0.4,我正在运行MongoChef。
我试着使用以下类似的方法:
db.userinfo.group({
"key": {
"userid": true
},
"initial": {
"countstar": 0
},
"reduce": function(obj, prev) {
prev.countstar++;
},
"cond": {
"$or": [{
"userdata": /PC/
}, {
"userdata": /wire/
}]
}
});
但那不喜欢手术室。
当我拿出OR时,我认为我应该一次做一半,然后在excel中合并结果,我得到了一个错误“group()不能处理超过20000个唯一键”,结果表应该比这个大得多
据我在网上所知,我可以使用聚合管道来实现这一点,但我找不到任何关于如何实现这一点的清晰示例
这似乎应该是一个简单的东西,应该内置到任何DB中,但我觉得它不是这样毫无意义。
非常感谢您的帮助。/
使用该方法“sooo”效果更好,因为.group()
是一种非常过时的方法:
db.userinfo.aggregate([
{“$match”:{
“userdata”:{“$in”:[/PC/,/wire/]}
}},
{“$组”:{
“_id”:“$userid”,
“计数”:{“$sum”:1}
}}
])
下面是一个写你的病情的短得多的方法
这是本机代码,与JavaScript翻译相反,因此运行速度更快。下面是一个示例,它计算姓氏值为“smith”的记录的姓氏值的不同数量: distinct(“first_name”,“last_name”:“smith”}) 输出 三,