Tag: mongodb

mongodb中的多重限制条件

我有一个集合,其中一个字段是“类型”。 我希望得到每种类型的一些值,具体取决于所有类型相同的条件。 就像我想要类型A的2个文档,类型B的2个文档。 如何在单个查询中执行此操作? 我正在使用Ruby Active Record。

CURSOR_NOT_FOUND – 我的cron工作开始在中间死亡

一项成功运行多年的cron工作在完成约80%后突然开始死亡。 不确定是不是因为收集结果正在稳步增长并达到一些临界尺寸(对我来说似乎没有那么大)或任何其他原因。 我不知道如何调试这个,我发现该作业死亡的用户并试图为该用户运行该作业,2小时后收到CURSOR_NOTFOUND消息。 昨天它在所有用户运行3小时后死亡。 我仍在使用旧的mongoid(2.0.0.beta),因为多次依赖并且没有时间来改变它,但是mongo是最新的(我知道1.1.2之前的版本中的bug)。 我发现了两个类似的问题,但它们都不适用。 在这种情况下 ,他们使用了Mopped,它不是生产准备好的。 这里的问题在于分页。 我收到此错误消息 MONGODB cursor.refresh() for cursor xxxxxxxxx rake aborted! Query response returned CURSOR_NOT_FOUND. Either an invalid cursor was specified, or the cursor may have timed out on the server. 有什么建议?

Rails / Mongoid:在mongoimport之后,父对象无法识别has_many / belongs_to关系的子对象

使用mongoimport工具通过CSV将包含以下行的CSV导入mongodb: object_1_id,field1,field2 52db7f026956b996a0000001,apples,oranges 52db7f026956b996a0000001,pears,plums 这些字段将导入到集合Object2 。 导入后,通过控制台确认存在行。 # # Object2可以通过object_1_id访问object_1_id : > o = Object2.first # > o1 = o.object_1 # 但是Object1看不到任何使用mongoimport导入的Object2行。 它可以看到通过控制台或其他方式创建的所有行: > o1.object_2s.count 10 > o1.object_2s.find(“52e0713417bcabcb4d09ad12”) Mongoid::Errors::DocumentNotFound: Document not found for class Object2 with id(s) 52e0713417bcabcb4d09ad12. TL; DR Object1似乎无法识别通过mongoimport导入的子模型,尽管子项正确存储了父ID并且能够识别其父项。

模型属性包含对象的集合

我有主模型页面,它是容器。 该页面可以包含一些待办事项列表,备注,文件和讨论。 我们的想法是让它们按特殊顺序排列。 Page.last.container # [Todolist_obj, Note_obj, File_obj, Note_obj, Discussion_obj, File_obj, File_obj] 所以我开始使用Mongodb 或者我也考虑过将Postgres与hstore一起使用,但不知道它是否会有所帮助 或者可能只是任何数据库并在获取页面时反序列化所有对象,并在保存时序列化对象 或者我可以使用MTI制作超类Item并从中inheritance所有包含对象,并使Page有很多关系。 所以我不知道哪种方式最好? 或者有更好的方法?

如何规范化Mongo中的输入 – Ruby

我正在处理一些非常大的第三方CSV文件,我在Mongo中导入。 问题是这些文件上的标头非常不一致。 一些文件包含所有小写,一些混合大小写和一些全大写标题。 导入文件后,有没有办法不敏感地查询集合大小写? 总之我能做到: @collection.find(‘AB’ => value) so that it’s true for fields ‘ab’ or aB’ as well? 有没有办法在导入时标准化这些标题? 或者可能是另一种方式? 建议重复的问题是正则表达式搜索值而不是字段本身

在Ruby on Rails 3.2中使用Mongo DB会话存储时如何清除旧/陈旧会话

我inheritance的Ruby on Rails应用程序运行良好,但使用MongoDB进行会话存储。 会话收集表尚未在2年多的时间内被清除(!!!),这意味着它有超过200万个条目,占用大约4GB(!!!)的空间。 对于数据库而言,这并不是一件好事,也不是必需的,并且是一个令人难以置信的误用空间 – 整体而言 – 远小于4GB。 所以调查如何清理这些东西我在各种网站上发现了很多post – Stack Overflow和其他 – 解释了一般过程: 使用Rails中的rake任务清理会话数据库存储 清除Rails会话 如何清除rails会话表 Rails:清除存储在数据库中的旧会话 这是有道理的:创建一个连接到sessions的rake任务,并根据updated_at条件删除条目。 都好! 我的问题是这个Ruby on Rails应用程序使用MongoDB和Mongoid,所以这些页面上提供的示例实际上都没有用。 所以像这样的东西不起作用: namespace :sessions do desc “Clear expired sessions (more than 7 days old)” task :cleanup => :environment do ActiveRecord::SessionStore::Session.delete_all([“updated_at < ?", 7.days.ago]) end end 该应用程序不使用ActiveRecord,因此没有骰子。 rake任务因ActiveRecord不存在而死亡,如果包含ActiveRecord则死亡,因为核心DB逻辑不依赖于ActiveRecord模型; 这都是Mongoid。 还使用所谓的烘焙rake db:sessions:clear一些人推荐似乎没有工作,我相信连接到不使用ActiveRecord的应用程序,因此该任务甚至不存在。 我如何能够使用Rails 3中的Mongoid创建一个等效查询来清除数据库会话存储中的死,旧和陈旧会话?

轨道上的ruby中的嵌套属性

我想在ruby中创建评论,但我有问题 1)posts_controller.rb def comment Post.find(params[:id]).comments.create(params[:comment]) flash[:notice] = “Added your comment” redirect_to :action => “show”, :id => params[:id] end 2)show.html.erb “comment”, :id => @post %> 3)post.rb class Post include Mongoid::Document include Mongoid::Timestamps::Created include Mongoid::Timestamps::Updated field :title, type: String field :content, type: String field :user_id, type: Integer field :tag, type: String field :owner, type: String embeds_many :comments […]

使用mongomapper在rails app中执行查询

在我的rails应用程序中,我正在编写mongo db查询到应该执行AND操作的集合(例如:基本上我想要收集所有用户详细信息,其中city = delhi和gender = male) 。我陷入了这个,我指的是这个链接。 http://mongomapper.com/documentation/plugins/querying.html 。 即使我在2列 – Rails 3.1.rc4上遵循以下链接MongoMapper OR子句 。 但没有什么工作,我是新来的我不知道这是正确的方法,否则有任何方法,请帮助我在这。 我正在使用rails 3.1和mongo_mapper ORM。 查询详情: @c=Customer.where(:$and => [:gender => “Male”,:city => “DELHI/NCR”]) Output: #”Male”, :city=>”DELHI/NCR”}], transformer: #> 我试过这个也没什么用 @c=Customer.where(:$and => [{:gender => “Male”},{:city => “DELHI/NCR”}])

可排序的表列在MongoDB中不起作用

我正在使用rails castvideohttp://railscasts.com/episodes/240-search-sort-paginate-with-ajax 。 它适用于Mysql数据库。 我想在Mongodb中实现这个。 我的application_helper.rb文件是这样的 def sortable(column, title = nil) title ||= column.titleize css_class = column == sort_column ? “current #{sort_direction}” : nil direction = column == sort_column && sort_direction == “asc” ? “desc” : “asc” link_to title, params.merge(:sort => column, :direction => direction, :page => nil), {:class => css_class} end 我的products_controller.rb文件是这样的 helper_method :sort_column, […]

使用mongoid / mongodb提取,建模和更改数据模型

我正在寻找一种更好的方法,如果可能的话,使用惊人的mongoid ODM驱动程序来操纵现有的mondodb数据模型。 假设您有一个嵌入的一对多数据模型,如下所示: class User include Mongoid::Document field :nickname embeds_many :watchlists end class Watchlist include Mongoid::Document field :html_url field :description field :tags_array, type: Array embedded_in :user end 现在,对于所有用户,您只想提取每个监视列表的一部分,当且仅当它具有 tags_array == [“ruby”, “web”, “framework”] 只返回几个字段(不是整个监视列表文档): watchlist的html_url内容 关注列表的描述内容 和 相关父昵称(User.nickname) 我试过这样的事情: 1.9.2p290 :574 > Competitor = Struct.new(:html_url, :description, :user) => # 1.9.2p290 :575 > competitors = [] […]