Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 具有计数和条件mongo DB的不同值_Regex_Mongodb_Count_Group By_Aggregation Framework - Fatal编程技术网

Regex 具有计数和条件mongo DB的不同值

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": {

我是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": {
    "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”})

输出 三,