草庐IT

MongoDB7

全部标签

mongodb - 使用 MongoCollection.FindAll 两次返回相同的文档

由于从MongoDB获取重复文档,我们在系统中遇到了一个错误。当使用FindAll同时从另一个进程更新集合时,会发生这种情况。避免这种情况的最佳做法是什么?我们不介意获取刚刚更新的文档的陈旧版本、获取刚刚删除的文档或丢失刚刚插入的文档。我们已经看到游标有一个SetSnapshot选项($snapshot:true),但是性能影响是什么?为什么默认情况下不启用?我们可以手动删除返回的重复项,但这似乎不对,而且还会影响性能。更新:据我们了解,更改文档大小的更新可能会移动其在集合中的位置。如果在$snapshot选项关闭时,这种更新发生在FindAll操作期间,文档可能会返回两次。更新2:在

java - Spring Data MongoDB 排序性能

我发现SpringDataMongoDB排序性能存在显着差异,具体取决于方向。我正在对一个属性进行排序,并且在两个方向上都有索引。升序排序时,响应时间约为80毫秒,降序排序时约为2.7秒。native查询分别需要5毫秒和50毫秒。后续页面的查询稍微快一些,大约1秒。2.7秒对我的应用程序来说是NotAcceptable,我能做些什么吗?Controller:Stringq=URLDecoder.decode(query);Sort.Directiond=Sort.Direction.ASC;if(direction==-1){d=Sort.Direction.DESC;}String[

java - 在 Javascript 和 MongoDB 中使用 UTC 日期

我在正确使用UTC日期时遇到问题,想知道是否有处理此问题的通用方法。基本上我有一个javascript日期选择器,我可以在其中选择一个日期。例如:2014-10-15当使用JSON.stringify()将其转换为字符串时,我最终得到:2014-10-14T22:00:00+0200我假设这是正确的,因为日期已转换为UTC日期。当日期到达我的java(jersey)REST界面时,它看起来像下面这样:2014-10-14T22:00:00.000Z日期似乎相同,但+0200已不存在。可能导致问题。下一步是将日期保存到我的mongo数据库中,然后像这样存储日期:2014-10-1420:

mongodb - 是提示({$自然: 1}) redundant when using a tailable cursor?

在我发现的许多在上限集合上使用可尾游标的示例中,代码包括:hint({$natural:1})(例如here),包括官方文档(here),以“确保我们不使用任何索引”,并且结果以自然(即磁盘)顺序返回。但是,文档还表明这是可尾游标的默认行为:Tailablecursorsdonotuseindexesandreturndocumentsinnaturalorder.那么提示的使用是多余的吗?我试着查看explain()的输出,有和没有hint,据我所知,没有区别。 最佳答案 是的,是的。有时你可能想做的是以相反的自然顺序返回结果(最

使用 Oboe.js、MongoDB 和 Express.js 进行 JSON 流式传输

我正在使用Oboe.js、MongoDB和Express.js试验通过HTTP的JSON流。重点是在MongoDB(Node.js的mongodbnative驱动器)中进行查询,将其(JavaScript数组)通过管道传输到Express.js并在其中解析带有Oboe.js的浏览器。我所做的基准比较了MongoDB查询服务器端和客户端JSON解析中的streaming与blocking。这是两个基准测试的源代码。第一个数字是1000万个文档集合100项(分页)的1000次查询的毫秒数和括号之间的第二个数字,表示在解析MongoDB结果数组中的第一项之前的毫秒数。流式基准服务器端://O

c# - MongoDb 查询和 system.linq

当我使用System.linq查询MongoCollection中的对象时:varresult=collection.Find(query).Where(x=>x.something==something);这是对数据库还是内存中的集合进行的查询?例如“SetSkip”在MongoDb中创建查询,但“Skip”在内存中执行。如果“.Where”在内存中完成,有没有办法不这样做? 最佳答案 .Where查询是通过IEnumerable.Where在内存中完成的,因为它是在建立MongoDB的Find调用的结果上执行的要执行的查询。要将

node.js - 库存 Mongodb 适配器 : Connection Closed By Application 的 NodeJS 错误

我在使用MongoDB时遇到了一个奇怪的问题。我的数据库集合正在关闭,我想这就是它应该做的(我正在遵循mongo样板文件)但我看不出为什么文档会是空值。我已经用我能想到的所有方法检查过了,但我不太了解光标对象。Console.logging它似乎给了我一堆原生的mongo属性(它们看起来像函数,例如each、toArray等)所以它看起来是正确的,但它不是我可以看到的带有数据字段的常规对象。在它遇到带有if(docs==null)的ifblock后,连接将关闭,并且不会执行elseif中的每个block。理想情况下,如果有一种方法可以帮助解决问题或弄清楚如何执行此操作,那就太好了。更多

node.js - 模拟访问Mongodb失败

我创建了一个Express.js库,它使用官方Node.js驱动程序进行Mongodb操作。我目前正在编写单元测试,我想模拟访问数据库的失败,以确保:图书馆承认失败案例(处理错误)进行正确的错误回调并触发适当的事件。我希望测试能够跨平台运行,最好不需要使用特殊参数关闭或启动数据库。查看reference对于命令,sleep命令似乎几乎完全符合我的要求,但以秒为单位的等待时间相当长,而且它被标记为仅供内部使用,您需要使用特殊参数启动数据库才能正常工作。forceerror命令看起来是另一个不错的命令,但同样,它仅供内部使用,而且描述至少可以说是模糊的。我想知道是否有任何推荐的(最好不要过

mongodb - 计算 MongoDB 中文档子集的集合统计信息

我知道SE的基本规则是不要在没有给出你已经尝试过的例子的情况下提出问题,但在这种情况下我找不到从哪里开始。我查看了MongoDB的文档,看起来只有两种方法可以计算存储使用量:db.collection.stats()返回有关整个集合的统计信息。在我的例子中,我需要知道集合中数据子集(特定用户的数据)所使用的存储量。Object.bsonsize()返回单个记录的存储大小,这将需要一个游标函数来计算每个文档的大小,一次一个。我对这种方法唯一关心的是大量数据的性能。如果单个用户有数以万计的文档,此过程可能会花费很长时间。有谁知道一种方法可以高效准确地计算集合中记录集的总文档大小。感谢您的帮

node.js - 唯一和稀疏模式级索引 MongoDB 和 Mongoose

我正在尝试使用Mongoose在模式的两个字段上创建索引,这两个字段在MongoDB中是唯一且稀疏的,如下所示:varArraySchema=newSchema({user_id:{type:mongoose.Schema.Types.ObjectId,ref:'User'},event_id:{type:mongoose.Schema.Types.ObjectId,ref:'Event'}},{_id:false});ListSchema.index({user_id:1,event_id:1},{sparse:true,unique:true});然后在用户模式的数组中使用它:va