草庐IT

regex-group

全部标签

mongodb - 如何在 mongodb $group 之后使用新键将数据再次分组到单个对象中?

我有一个mongodb数据库,其中包含看起来像这样的公司集合(这只是一个示例,实际集合要大得多):[{"_id":100,"name":"TestName1","level":"1"},{"_id":101,"name":"TestName2","level":"1"},{"_id":102,"name":"TestName3","level":"2"}]其中“level”的范围只能是0到5我正在尝试使用$group和$project进行聚合查询,计算每个级别中有多少家公司,但根据我需要遵循的API规范,它需要像这样格式化,在一个单一的对象:{"metrics":{"companies

mongodb - 如何 $bucket 来自以前的 $group 的多个集合

我想在$bucket函数中单独处理$group的结果。我的数据:{"_id":1,"title":"ThePillarsofSociety","artist":"Grosz","year":1926,"type":1}{"_id":2,"title":"MelancholyIII","artist":"Munch","year":1902,"type":1}{"_id":3,"title":"Dancer","artist":"Miro","year":1925,"type":1}{"_id":4,"title":"TheGreatWaveoffKanagawa","artist":"

regex - MongoDB 使用 Filter 获取 N 个最近的文档

我想使用过滤器从我的Mongodb中查询最后3个文档。在数据库中,我每15分钟收到300个文档,现在在我的数据库中,我有近10,000个文档,在每300个文档中,我有一个字符串字段包含SYSTEM_000_00_SAVING例子这就是我的数据库的样子{"_id":ObjectId("5a81986d7aee9536681af520"),"Data":"02-02-201700:17:22SYSTEM_000_00_SAVING"}{"_id":ObjectId("5a81986d7aee9536681af521"),"Data":"02-02-201700:17:22SyTime_00

node.js - 如何在 mongodb 中找到整数值的 $regex?

我有以下收藏。[{_id:ObjectId("5b17ab5489264c2df61ed2d6"),amount:12514545}]我想搜索125并获取以下文档。我已经试过了,但是没有用:db.collection.find({amount:{$regex:125}})如果能通过聚合查询就更好了。Test.aggregate([{"$match":{"$or":[{"amount":{parseInt(searchString)}},{"firstName":{"$regex":searchString}}]}}]) 最佳答案 您

javascript - 如果使用特殊字符存储值,则使用 $regex 的 Mongoose 查找不会返回预期结果

我正在尝试构建一个搜索用户名或全名的搜索功能......它工作正常但如果用户名像这样“example.name”或“example_name”如果我这样搜索它没有返回结果“examplename"或"examplename"如何解决这个问题以返回匹配的字符,即使是特殊字符用户架构constmongoose=require("mongoose");constbcrypt=require("bcrypt-node");constuniqueValidator=require("mongoose-unique-validator");constschemaTypes=mongoose.Sch

regex - 使用 RegExp 和数组查询

我有一个Post类,其作用域如下:scope:by_tag,->(tag){where(:desc=>/##{Regexp.escape(tag)}/)}它在一个标签上工作得很好,但我不能让它在多个标签上工作。例如:我无法让它给我标有#rails和#regexp的帖子。通过criteriaunion,我可以让它返回带有#rails或#regexp标记的帖子。我怎样才能让它工作?我正在使用mongoid,顺便说一下。提前致谢。只是发现这不是OR。发生的情况是,我第二次调用by_tag时,它覆盖了之前的。我相信那是因为它具有相同的属性。有人知道如何解决这个问题吗?谢谢

mongodb 更改 $group 输出格式

我有以下文档结构{"timestamp":13512493603565120,"value":1,"y":42,"M":513,"w":2234,"d":15639,"S":46918,"h":375347,"m":22520822,"s":1351249360,"_id":ObjectId("508aa61100b5457c04000001"),"__v":0}我有一个如下的mongodb聚合来汇总按字段y分组的值:aggregate({$group:{_id:"$y",value:{$sum:4}}})这会给我[{"_id":42,"value":16}]我现在想要的是格式化此输出

php - MongoDB RegEx 引擎完整性

根据Mongo文档,它使用PCRE引擎,PCRE支持\b和\w用于unicode字符,但后面的RegEx与Unicode字符串不匹配,是否有任何解决方案或替代语法?//inMongoconsole:db.col.find({word:/\b\pL\b/});//inPHP(newMongo())->db->col->find(['word'=>newMongoRegex('/\b\pL\b/u')]); 最佳答案 我找不到任何关于MongoDB的PCRE实现支持哪些特性的文档,但如果它包含\pLUnicode字符类以及前瞻和后视断言

regex - 带有正则表达式的 MongoDB findOne(安全漏洞?)

在我将电子邮件插入数据库之前->我使用验证地址if(filter_var($emailAdress,FILTER_VALIDATE_EMAIL)){....}..但这可能是一个安全漏洞吗?$userAccObj=$db->user->findOne(array('email'=>array('$regex'=>'^'.$emailAdress.'$','$options'=>'i')));我应该这样做吗?还是没有必要?$emailAdress=preg_replace("/\@/",'\@',$emailAdress);$emailAdress=preg_replace("/\-/",

MongoDB 聚合 : How to query a limited amount of "top" documents per group?

假设我有一个包含员工文档的MongoDB集合:{name:"JohnDoe",department:"Finance",salary:100}如何查询每个部门薪资最高的X名员工?编辑为了让自己更清楚一点,我是这样想的:db.collection.aggregate({$sort:{salary:-1}},{$group:{_id:"$department"employees:{$addToSet:"$name"}},{$project:{employees:{$slice:X}}})但这行不通有两个原因:1.$addToSet不保证输出集的任何顺序(至少根据documentation)