草庐IT

mongodb - 每 20 分钟到 2 小时体验一次 Mongo::OperationTimeout

我似乎每隔20分钟-1小时就会经历一次Mongo::OperationTimeout我的堆栈:导轨3.1.3Mongoid3(git边缘)unicorn4.1.12XMongoDB2.0.2(应该正确设置KeepAlive默认设置)配置为ReplicaSetUbuntum1.largeEC2我已尝试将EC2上的KeepAlive设置为300,如http://www.mongodb.org/display/DOCS/Amazon+EC2中所述但仍然没有帮助我试过只使用一个主配置而不是ReplicaSet,但这也没有帮助。下面是mongoid.conf:production:databas

ruby-on-rails - Mongoid : HABTM does not preserve insertion order

我这里有个小问题。在我的项目中,有些页面可以有多个设置(每个(用户,页面)有一个设置对象)。这些设置可以引用“灵感页面”。所以我的设置模式看起来像this.该关联未反射(reflect)在Page类中。问题显示在要点的底部:在ruby​​对象中,插入顺序似乎保留了下来,但在数据库端看起来却不是。知道这里发生了什么吗?感谢您的宝贵时间! 最佳答案 好的,所以我在mongoid跟踪器上提交了一个问题,我得到了答案,请参阅https://github.com/mongoid/mongoid/issues/1813.基本上,在mongoid

ruby-on-rails - Mongo/Mongoid 将创建但不更新模型

我有一个应用程序,它会在帖子存在时更新它,否则它会创建一个新帖子。这篇文章包含嵌入式文档:classPostembeds_one:tag,:as=>:taggable,:class_name=>'TagSnippet'endclassTagSnippetincludeMongoid::Documentfield:nameembedded_in:taggable,polymorphic:trueend帖子在Controller中更新,代码如下:@post=Post.where(--somecriteriawhichwork--).firstif@post@post.attributes=

ruby-on-rails - TTL for mongoid in rails

如mongodb网站所述,我可以使用.ensureIndex({state:1},{expireAfterSeconds:10})使记录过期。但是如何从rails中实现呢?谢谢 最佳答案 假设您使用的是MongoDB2.2,Ruby驱动程序应该已经通过Collection的create_index()支持它和ensure_index()方法。索引选项直接传递给服务器。API文档中带下划线的符号在内部进行翻译以方便使用(例如:drop_dups设置:dropDups选项)。你应该能够做到:@collection.create_inde

关闭安全模式的 MongoDB 一致性

帮助我了解在这种情况下我可以期望与MongoDB的一致性级别。我们正在运行一个副本集,其中Mongoid中的consistency标志设置为strong,这意味着只读到master。但是safe配置默认为false,因此写入操作会立即返回。假设没有任何错误,如果客户端应用程序插入一个新的大型文档,然后快速尝试在另一个线程中读取它,我们是否保证可以取回该文档?或者我们是否需要打开安全模式来确保一致性? 最佳答案 如果您写入然后从主数据库读取,您将不会总是得到一致的结果。您是否处于同一连接上很重要。如果您在同一个连接上,则不需要安全。如

ruby-on-rails - 如何使用 Mongoid 执行 runCommand?

我在MongoDB中有文本索引,想使用text在我的收藏中搜索的命令。在Mongoid中找不到此功能。 最佳答案 我试图找到解决方案,因为我也是一个mongoid用户。除了where查询之外,我没有发现任何与mongoid中的搜索文本相关的特定内容。经过一番调查,我发现了mongoid_search可用于搜索文本的gem。它有一个限制,写在自述文件的第一行是“如果您的可搜索模型很大(即1.000.000+条记录),solr或sphinx可能更适合您。”如果有,则需要配置solr或elasticsearch以获得更好的性能。如果您打算

Ruby:二进制字符串到 IO

我有一串二进制数据,我需要它作为一个IO对象。所以我尝试了这个:r,w=IO.pipe()w但它失败并出现此错误:Encoding::UndefinedConversionError("\xD0"fromASCII-8BITtoUTF-8)为什么它首先要尝试转换为UTF-8?有没有办法强制IO::pipe方法为二进制模式?更多详情:我正在尝试使用Mongoid驱动程序从MongoDB读取二进制数据(这是一个Excel文件),然后将其转换为IO对象以便使用Spreadsheetgem读取它。Spreadsheet#open需要文件路径或IO对象。这是我的文件文档的样子:classImpo

ruby-on-rails - Mongoid 和 has_and_belongs_to_many 关联

我正在使用与Mongoid的HABTM关联,​​我有以下方案:1)用户has_and_belongs_to_many:专业2)特化has_and_belongs_to_many:users一切正常,我很高兴,但我注意到任何特化实例中的用户ID都保存为一个数组,如下所示:那是如果我只有2个用户具有此特化,当我想象当有大约10,000个用户时它会有多大,我害怕我会遇到查询和搜索问题,即使我添加一个这个字段的索引,我想文档的大小也会很大,谁能告诉我我是否应该担心性能问题以及我错在哪里谢谢 最佳答案 您的担心是有道理的。我尝试使用HABTM

ruby-on-rails - Mongoid 使用嵌入式哈希查找或创建

使用Mongoid(3.1.6)我有一个包含以下字段的集合:field:project,type:Stringfield:date_hierarchy,type:Hash,default:{year:0,semester:0,quarter:0,month:0,day:0}我想查找项目为“1”的文档,date_hierarchy:{year:2013,semester:2,quarter:4,month:11,day:12}如果找不到文档,我希望创建它我怎样才能做到这一点?我试过这些,但没有一个有效MyModel.where(:project=>"1","date_hierarchy.

mongodb - 虽然我在数据库中有记录,但它给出的是 "Mongoid::Errors::DocumentNotFound"

虽然我有ID为13163的记录(db.locations.find({_id:13163})),但它给我错误:Mongoid::Errors::DocumentNotFoundinLocationsController#showProblem:Document(s)notfoundforclassLocationwithid(s)13163.Summary:WhencallingLocation.findwithanidorarrayofids,eachparametermustmatchadocumentinthedatabaseorthiserrorwillberaised.The