标签: mongoid

4
推荐指数
2
解决办法
2050
查看次数

Mongoid:选择适合多个选项的嵌入对象

我有这个结构

class House
  include Mongoid::Document
  embeds_many :inhabitants
end

class Inhabitant
  include Mongoid::Document
  embedded_in :house
  field :name
  field :gender
  field :age
end
Run Code Online (Sandbox Code Playgroud)

我可以得到所有女性居住的房屋:

houses = House.where("inhabitants.gender" => "female")
Run Code Online (Sandbox Code Playgroud)

但是,如何才能获得50岁以下女性居住的所有房屋?如何为嵌入对象指定多个条件?

ruby ruby-on-rails mongodb mongoid ruby-on-rails-3

4
推荐指数
1
解决办法
2339
查看次数

开放时间的架构MongoDB

你如何在mongoDB中的文档中存储开放时间,比如使用Mongoid可以轻松查询?我已经读过这个帖子,但我不确定如何根据我的需要实现它.

我需要能够每天添加多个打开和关闭时间,因为图书馆应该能够在白天关闭几个小时然后重新打开.

我需要能够在这些开放时间添加例外.例如; 在特定日期关闭星期一.

请分享一些关于如何以最灵活的方式做到这一点的最佳实践和经验.

mongodb mongoid

4
推荐指数
1
解决办法
2098
查看次数

Mongoid查询!限制和订单的组合

在我的rails应用程序中,我想要获取具有唯一值的10个最后记录.

我试过了:

@users = User.all(:limit => 10, :sort => [:created_at, :desc]).map{|t| t.first_name}.uniq
Run Code Online (Sandbox Code Playgroud)

但,

限制不能像我期望的那样工作..

我希望'limit'能够最后影响查询.

有任何想法吗?

mongodb mongoid

4
推荐指数
1
解决办法
4588
查看次数

Mongoid store_in产生随机结果

我使用Rails 3.2.2与mongoid 2.4.6.为了保持我的集合小,我使用"store_in"语句将子对象存储在sepparate集合中的基类中.我的代码看起来像这样:

class BaseClass
  include Mongoid::Document
end

class ChildClass1 < BaseClass
  store_in :child_1
end  

class ChildClass2 < BaseClass
  store_in :child_2
end
Run Code Online (Sandbox Code Playgroud)

似乎对象随机存储在或其他子集合中.Child1类型的对象有时会存储在集合Child2中.这是我在日志中看到的令人惊讶的事情:

Started POST "/child_class_1" for 127.0.0.1 at 2012-05-22 10:22:51 -0400
Processing by ChildClass1Controller#create as HTML

MONGODB (0ms) myproject_development['child_2'].insert....
Run Code Online (Sandbox Code Playgroud)

它来自哪里?这是mongoid,rails还是mongodb中的错误?

inheritance ruby-on-rails multiple-inheritance mongodb mongoid

4
推荐指数
1
解决办法
1624
查看次数

在我的应用程序中查找所有mongoid模型名称

有没有办法找到我的rails应用程序中的所有Mongoid模型名称.我可以通过获取app/models文件夹中的所有文件找到所有模型,但我特别想要mongoid模型名称.

mongoid ruby-on-rails-3

4
推荐指数
2
解决办法
2726
查看次数

为什么这个mongoid Rails 3项目中没有rake任务?

https://github.com/memphis518/Garden-Dating-Service

上面的公共仓库是我们正在为奥斯汀社区花园工作的社区编码项目,到目前为止它是一个相当简单的项目,但由于某种原因rake db:seed不起作用("不知道如何构建任务db:seed" ),当你运行rake -T它时,根本没有显示任何佣金任务.

MongoID文档说它提供了大多数与DB相关的常见rake任务 - 我无法弄清楚为什么它们不在那里.

rake mongoid ruby-on-rails-3

4
推荐指数
1
解决办法
1938
查看次数

用于插入的自定义Mongo ObjectId

一些背景:

我通过mongo-elasticsearch河将MongoDB与ElasticSearch结合使用.在Elasticsearch中,我希望我的文档结构如下所示:

{
    "_id": "SomeId-AnotherId",

    ... // all the other lovely denormalized data
}
Run Code Online (Sandbox Code Playgroud)

SomeId-AnotherId是我在对数据进行非规范化时创建的.我需要这种结构的原因是我需要能够说http://elasticsearch/index/type/SomeId-AnotherId要检索文档.

我对我的数据进行了非规范化(一个C#应用程序),然后我插入MongoDB(这些数据然后通过河流进入ES,如上所述).当我插入MongoDB时,我目前的印象是我需要在我的模型上设置一个BsonId,Mongo用它来索引文档.这可以是ObjectId或任何其他类型,如string或int等,只要我添加[BsonId]属性.

我的模型看起来像这样:

public class Model {
    [BsonId]
    public string Id {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我这样设置:

model.Id = string.format("{0}-{1}", someId, anotherId);
Run Code Online (Sandbox Code Playgroud)

问题

目前我看到大约1,500个文件从〜10,000的插入进入Mongo.我看了一下我为模型对象生成的id,肯定有超过12个字节.mongo会拒绝那些而不是写它们吗?

Bson Id是12字节 - 这是否意味着如果我创建自己的ID(格式为:"SomeId-AnotherId"),它也应该只有12个字节长?无论如何围绕这个?

我不想对这些文档使用mongos默认的objectId,因为如上所述,一旦doc在elasticsearch中,我希望能够以特定的方式获取文档(在URI中使用"SomeId-AnotherId").

最后的笔记:

我知道我可以在我的模型中添加另一个ID属性,例如ElasticId,然后配置Elasticsearch来查找此属性并将其用作elasticsearch文档的_id.如果我这样做,那么我可以使用Mongos默认ID,一切都会好的.但是,我会牺牲弹性搜索性能,我还需要在弹性搜索中存储一个我不想要的额外字段.

对不起大规模的脑转储顺便说一下!! :)

mongodb mongoid elasticsearch mongodb-.net-driver

4
推荐指数
1
解决办法
9884
查看次数

Mongoid查询has_many

我有一个相当简单的mongodb模型目前2个系列学生课程(嵌入主题)

class Student < User
  include Mongoid::Document
  has_many :courses

class Course
  include Mongoid::Document
  belongs_to :student
  embeds_many :subjects
Run Code Online (Sandbox Code Playgroud)

我知道mongoid不支持直接查询has_many即

Student.courses
Run Code Online (Sandbox Code Playgroud)

因此,如果我想获得学生科目,这是唯一的方法

@student = Student.first
Course.find(@student.courses).subjects
Run Code Online (Sandbox Code Playgroud)

这目前有3个查询

  MOPED: 127.0.0.1:27017 QUERY        database=test collection=users selector=    {"$query"=>{"_type"=>{"$in"=>["Student"]}}, "$orderby"=>{:_id=>1}} flags=[:slave_ok] limit=-1 skip=0 batch_size=nil fields=nil (1.1775ms)
  MOPED: 127.0.0.1:27017 QUERY        database=test collection=courses selector={"student_id"=>"51f09457b5b605db25000002"} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (0.8862ms)
  MOPED: 127.0.0.1:27017 QUERY        database=test collection=courses selector={"_id"=>"51f09457b5b605db25000003"} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (0.8380ms)
Run Code Online (Sandbox Code Playgroud)

有更有效的方法吗?我知道我可以在课程中嵌入课程,但我也会直接查询课程集.

ruby-on-rails mongodb mongoid

4
推荐指数
1
解决办法
2864
查看次数

rails中的Mongoid :: Errors :: NoSessionConfig consolse

我克隆rails app(我们的公司项目),然后安装与mongo db和mongoid gem相关的所有内容.然后我运行rake db:setup然后运行rails s.它工作正常,我可以访问所有网站,并做一切.但我在rails控制台遇到了问题.

每当我这样做:

铁轨

然后

User.first
Run Code Online (Sandbox Code Playgroud)

我会得到这个错误

加载开发环境(Rails 4.1.1)irb(main):001:0> User.first Mongoid :: Errors :: NoSessionConfig:问题:找不到名为"default"的会话的配置.简介:
尝试创建新会话时,Mongoid无法找到名称的会话配置:'default'.这是了解连接所需的主机,端口和选项所必需的.解决方法:仔细检查您的mongoid.yml,以确保在sessions键下存在"default"配置.如果以编程方式设置了配置,请确保配置哈希中存在"default".来自/Users/rizalmuthi/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/mongoid-4.0.0.beta2/lib/mongoid/sessions/factory.rb:27:in create' from /Users/rizalmuthi/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/mongoid-4.0.0.beta2/lib/mongoid/sessions.rb:65:in with_name'来自/Users/rizalmuthi/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/mongoid-4.0.0.beta2/lib/mongoid/sessions.rb:105:in mongo_session' from /Users/rizalmuthi/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/mongoid-4.0.0.beta2/lib/mongoid/sessions.rb:121:in collection'from/Users/rizalmuthi/.rbenv/versions/2.1.1/lib/ruby​​/gems/2.1.0/gems/mongoid-4.0.0.beta2/lib/mongoid/sessions/options.rb:161:inin method_missing' from /Users/rizalmuthi/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/mongoid-4.0.0.beta2/lib/mongoid/contextual/mongo.rb:263:in initialize'from/Users/rizalmuthi/.rbenv/versions/2.1.1/lib/ruby​​/gems/2.1.0/gems/mongoid-4.0.0.beta2/lib/mongoid/contextual.rb:53:in new' from /Users/rizalmuthi/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/mongoid-4.0.0.beta2/lib/mongoid/contextual.rb:53:in create_context'from/Users/rizalmuthi/.rbenv/versions/2.1.1/lib/ruby​​/gems/2.1.0/gems/mongoid-4.0.0.beta2/lib/mongoid/contextual.rb:35:in context' from /Users/rizalmuthi/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/mongoid-4.0.0.beta2/lib/mongoid/contextual.rb:20:in first'from/Users/rizalmuthi/.rbenv/versions/2.1.1/lib/ruby​​/gems/2.1.0/gems/mongoid-4.0.0.beta2/lib/mongoid/findable.rb:122:in first' from (irb):1 from /Users/rizalmuthi/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/railties-4.1.1/lib/rails/commands/console.rb:90:in start'from /Users/rizalmuthi/.rbenv /versions/2.1.1/lib/ruby/gems/2.1.0/gems/railties-4.1.1/lib/rails/commands/console.rb:9:in start' from /Users/rizalmuthi/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:69:in console'from /Users/rizalmuthi/.rbenv/versions /2.1.1/lib/ruby/gems/2.1.0/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:40:in run_command!' from /Users/rizalmuthi/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/railties-4.1.1/lib/rails/commands.rb:17:in "from /Users/rizalmuthi/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems /activesupport-4.1.1/lib/active_support/dependencies.rb:247:in中的require' from /Users/rizalmuthi/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:247:in阻止来自/Users/rizalmuthi/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/activesupport -4.1.1/lib/active_support/dependencies.rb:232:in load_dependency' from /Users/rizalmuthi/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:247:inrequire'from/Users/rizalmuthi/Documents/Sites/WORK/tapway/bin/rails:8:in <top (required)>' from /Users/rizalmuthi/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:241:inload'from /Users/rizalmuthi/.rbenv/版本/ 2.1.1/lib/ruby​​/gems/2.1.0/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:241:in block in load' from …

ruby-on-rails mongoid ruby-on-rails-4

4
推荐指数
2
解决办法
4680
查看次数