gpt4 book ai didi

regex - 具有计数和条件 mongoDB 的不同值

转载 作者:可可西里 更新时间:2023-11-01 10:03:32 34 4
gpt4 key购买 nike

我是 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。当我取出 OR,想我一次做一半并在 excel 中合并结果时,我得到一个错误“group() 无法处理超过 20000 个唯一键”,结果表应该比那个。

据我在网上了解到的情况,我可以使用聚合管道来完成此操作,但我找不到任何明确的示例来说明如何操作。

这似乎应该是一个简单的东西,应该内置到任何数据库中,但我认为事实并非如此。非常感谢任何帮助。

最佳答案

/

使用 .aggregate() 效果“非常好”方法,因为 .group() 是一种非常过时的方法:

db.userinfo.aggregate([
{ "$match": {
"userdata": { "$in":[/PC/,/wire/] }
}},
{ "$group": {
"_id": "$userid",
"count": { "$sum": 1 }
}}
])

$in这是编写 $or 的一种更短的方式条件也是如此。

这是 native 代码而不是 JavaScript 翻译,因此它运行得更快。

关于regex - 具有计数和条件 mongoDB 的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31917332/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com