草庐IT

elixir-mongo

全部标签

mongodb - 为什么直接搜索 MongoDB 分片的全文搜索比通过集群管理器 (mongos) 实例快得多?

我对MongoDB中的全文搜索性能非常不满意,因此我一直在寻找开箱即用的解决方案。相对较小的2500万个文档集合分布在8台强大的机器上(4个具有冗余的分片),我看到一些查询需要10秒。那太可怕了。在lark上,我尝试了10秒直接查询分片,似乎mongos将查询串行发送到分片,而不是并行发送。在4个分片中,我看到一个分片的搜索时间为2.5秒,而其他3个分片的搜索时间各不到2秒。总共不到8.5秒,但通过mongos花了10秒。掌心。有人可以确认这些对分片的查询是连续运行的吗?或者提供一些其他的解释?直接查询分片有哪些陷阱?我们在4.0上,查询看起来像这样:db.items.aggregat

regex - Mongo 正则表达式搜索的索引范围

我正在使用MongoDB,并且我有一组具有以下结构的文档:{fName:"Foo",lName:"Barius",email:"fbarius@example.com",search:"foobarius"}我正在构建一个函数,它将在search字段上执行正则表达式搜索。为了优化性能,我在搜索字段中索引了这个集合。然而,事情还是有点慢。所以我在一个示例查询上运行了explain():db.Collection.find({search:/bar/}).explain();查看获胜计划,我看到使用了以下索引边界:"search":["[\"\",{})","[/.*bar.*/,/.*b

mongodb - Azure:不支持 DocumentDB Mongo $group

将我的Mongo应用程序迁移到Azure上的DocumentDB后,$group查询不再起作用,并引发以下错误:{MongoError:'$group'isnotsupported',name:'MongoError',message:'\'$group\'isnotsupported',_t:'OKMongoResponse',ok:0,code:115,errmsg:'\'$group\'isnotsupported','$err':'\'$group\'isnotsupported'}有没有其他人遇到过这种情况并可能有任何建议? 最佳答案

mongodb - 在mongo聚合中将ObjectID转换为字符串

我现在处于这种情况:我有一个收藏X:{_id:ObjectId('56edbb4d5f084a51131dd4c6'),userRef:ObjectId('56edbb4d5f084a51131dd4c6'),serialNumber:'A123123',...}我需要聚合所有文档,按userRef+serialNumber对它们进行分组,所以我尝试像这样使用concat:$group:{_id:{'$concat':['$userRef','-','$serialNumber']},...所以基本上在我在MongoDB中的聚合中,我需要通过ObjectId和字符串的串联来对文档进行分

mongodb - 比较两个集合的 mongo 差异

我有两个mongo集合,一个是生产环境,另一个是测试环境。如何比较我的两个集合之间的差异?我尝试将它们转储到bson,然后转换为json。但我不能只对它们进行简单的比较,因为排序可能会有所不同,而且json文件太大而无法排序。 最佳答案 在shell中尝试以下操作,它将遍历集合中的每个项目并尝试根据ID匹配每个文档。假设我们有2个集合db.col1和db.col2:>db.col1.find(){"_id":1,"item":1}{"_id":2,"item":2}{"_id":3,"item":3}{"_id":4,"item":

mongodb - mongo.lock 文件有什么用?

我正在使用mongodb-v1.8.1。不幸的是,我的服务器挂了,我重新启动了我的服务器。一旦它回来,我就无法启动MongoDB。我删除了mongo.lock文件并运行了修复数据库查询。现在mongo工作正常。我对mongo.lock文件感到困惑。mongo.lock文件有什么用?删除mongo.lock文件会影响我现有的数据吗?请让我知道您的建议..谢谢, 最佳答案 mongodb总是在服务器启动时创建mongodb.lock文件,并在mongodb停止之前删除它。删除mongodb.lock不会影响任何数据,它只是意味着mong

mongodb - mongo 3在唯一索引上重复 - dropDups

在mongoDB的文档中它说:“3.0版更改:dropDups选项不再可用。”如果我真的想创建唯一索引并销毁重复条目,我可以做些什么(降级除外)?请记住,我每秒收到大约300次插入,所以我不能只删除所有重复项,并希望在我完成索引时不会有任何重复项。 最佳答案 是的dropDupes现在是deprecated从2.7.5版开始,因为无法正确预测在此过程中将删除哪个文档。通常,您有2个选项:使用新的集合:创建一个新集合,在这个新集合上创建唯一索引,运行批处理以将旧集合中的所有文档复制到新集合中,并确保在此过程中忽略重复键错误。在你自己的

mongodb - 单个语句中的多个 mongo 更新运算符?

我可以在一个语句中结合$pushAll和$inc吗?在合并之前,这工作正常:db.createCollection("test");db.test.insert({"name":"albert","bugs":[]});db.test.update({"name":"albert"},{"$pushAll":{"bugs":[{"name":"bug1","count":1}]}});db.test.update({"name":"albert"},{"$inc":{"bugs.0.count":1}});db.test.update({"name":"albert"},{"$push

security - 在 URL 中使用 ID(来自 mongo 的 ObjectId)是否安全?

最近有人告诉我,在URL中使用mongodb_id字段是不安全的。我想知道这是不是真的。我的网站仅限于注册用户,每个用户都有他们的URL端点,其中包含来自mongo的id。这是典型的mongodb_id字段-一个SHA1。AFAIK,id是不可猜测的,即使有人点击了别人的id,我的应用程序中基于session的身份验证也不允许访问。除了应用程序本身之外,没有人可以直接访问数据库。我很想知道我是否缺少任何东西。编辑:澄清的问题。(mongodbObjectID不是SHA1) 最佳答案 MongoDB中的_id字段(默认情况下)为Obj

mongodb - 用mongo同时pull和addtoset

我有一个集合,其中的元素可以简化为:{tags:[1,5,8]}数组中至少有一个元素,并且它们都应该不同。我想用一个标签替换另一个标签,我认为不会有问题。所以我想出了以下查询:db.colll.update({tags:1},{$pull:{tags:1},$addToSet:{tags:2}},{multi:true})很酷,所以它会找到所有具有我不需要的标签的元素(1),如果它不存在,则将其删除并添加另一个(2)。问题是我得到一个错误:"Cannotupdate'tags'and'tags'atthesametime"这基本上意味着我不能同时做pull和addtoset。我还有其他