class Parent
include Mongoid::Document
embeds_many :children
field :title
end
class Child
include Mongoid::Document
embedded_in :parent
field :name
end
Run Code Online (Sandbox Code Playgroud)
Rails控制台
parent = Parent.new(:title => "Hello World")
parent.children << Child.new(:name => "Pedro")
parent
#=> #<Parent _id: 4e2330286254cc0e7d000007, _type: nil, title: "Hellow World">
Run Code Online (Sandbox Code Playgroud)
那么我怎样才能在Rails控制台中检查整个对象,直到孩子们被嵌入我的parent样式中我可以在mogodb控制台中执行它
{
"_id" : ObjectId("4e2330286254cc0e7d000007"),
"title": "Hello World",
"children" : [
{
"_id" : ObjectId("4d3ed089fb60ab534684b7e0"),
"name" : "Pedro"
}
]
}
Run Code Online (Sandbox Code Playgroud) 有谁知道如何使用sunpot_mongoid索引和搜索嵌入的文档?
在sunspot_mongoid问题中已经提出了这个问题,但到目前为止还没有解决方案.
嗨,大家好我创建了模型"House"
我按照本教程http://railscasts.com/episodes/238-mongoid
我创建了我的脚手架,然后在添加之后转到我的模型:
field :published_on, :type => Date;
Run Code Online (Sandbox Code Playgroud)
然后我在视图中看到日历以更新像教程这样的视图,但是当我更新DATE时没有出现日期.
我按照教程,但没有出现创建或更新日期.
有什么问题?
我刚刚在带有mongoid的rails中创建了一个app.
当我尝试按照mongoid网站上的教程运行时
rails g mongoid:config
Run Code Online (Sandbox Code Playgroud)
我得到以下一组错误.
/Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/active_support/whiny_nil.rb:48:in `method_missing': undefined method `values' for nil:NilClass (NoMethodError)
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/mongoid-2.3.4/lib/mongoid/railtie.rb:64:in `block in <class:Railtie>'
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/initializable.rb:30:in `instance_exec'
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/initializable.rb:30:in `run'
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/initializable.rb:55:in `block in run_initializers'
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/initializable.rb:54:in `each'
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/initializable.rb:54:in `run_initializers'
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/application.rb:96:in `initialize!'
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/railtie/configurable.rb:30:in `method_missing'
from /Users/XXXXXX/melodizr/config/environment.rb:5:in `<top (required)>'
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/application.rb:83:in `require'
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/application.rb:83:in `require_environment!'
from /Users/XXXXXX/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/commands.rb:22:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
Run Code Online (Sandbox Code Playgroud)
请帮助,这是杀了我,我觉得我没有错过任何东西,但它迟到了,我可能错了.
我遇到了mongoid的问题any_of.我正在尝试找到一个字段> 0或另一个> 0的对象.我的查询是:
Model.any_of(best_friend_method.gt => 0, method.gt => 0).desc(best_friend_method, method)
Run Code Online (Sandbox Code Playgroud)
它被"翻译"在:
#<Mongoid::Criteria
selector: {"$or"=>[{:best_friends_lc_sum=>{"$gt"=>0}, :lc_sum=>{"$gt"=>0}}]},
options: {:sort=>[[:best_friends_lc_sum, :desc], [:lc_sum, :desc]]},
class: FbAlbum,
embedded: false>
Run Code Online (Sandbox Code Playgroud)
据我了解,这就是我想要的.但它只给我6个结果.Model.where(:best_friends_lc_sum.gt => 0).count也给我6个结果,但Model.where(:lc_sum.gt => 0).count返回我~~ 850个对象.
我希望我的查询返回这两个的联合:是一个mongoid/mongodb错误,还是我做错了什么?
仅供参考:mongoid 2.4.5,mongodb 2.0.2,rails 3.1.3
谢谢你的时间!
假设我需要知道我一生中赚了多少钱:我在SQL中做的是这样的:
select sum(salary) from employee_salary where employee_id=1000;
Run Code Online (Sandbox Code Playgroud)
有没有一些简单的方法可以通过mongoid,rails在mongoDB中执行此操作?甚至不要考虑建议我使用map/reduce.
我发现最简单的方法是:
db.employee_salary.group(
{
cond: { "employee_id":1000 },
reduce: function(obj,prev) { prev.sum += obj.salary; },
initial: { sum: 0 }
}
)[0].sum;
Run Code Online (Sandbox Code Playgroud)
但它看起来很可怕......
我需要某个模型来包含对文档的引用.大部分模型都可以存储在postgres中.该模型适用于游戏中的"关卡".我想将级别数据本身存储在文档中,这比在sql中创建复杂树更有意义.
我可以使用安装了mongoid的postgres; 然而,在安装mongoid gem之后,我似乎只能够构建mongoid(非活动记录)文档.
问题是我有其他表的引用,我不知道如何在mongoid模型中链接它.
问题:
如何强制脚手架与活动记录而不是mongoid一起发生,反之亦然. 编辑:部分回答:在Mongoid安装后使用Active Record生成器?(第二个答案有效,但我不知道如何轻松往返)
有没有一种简单的方法可以从活动记录模型中引用文档(我知道文档说不要混合它们,但它是我想要做的事情的理想选择).
如果无法混合它们,那么我应该如何从postgres/active记录表中引用文档.换句话说,如何同时获取两个数据?
谢谢!
我刚刚开始了一个全新的rails项目,我正在尝试完成的第一项任务是创建一个对象并将其保存在我的数据库中.我经历了生成对象的自动方式,在这种情况下是一个URL对象,如下所示:
rails generate scaffold Url domain:string
Run Code Online (Sandbox Code Playgroud)
我还测试了两个单独的mongoid.yml配置设置.第一个如下:
development:
sessions:
default:
# Defines the name of the default database that Mongoid can connect to.
# (required).
uri: mongodb://[username]:[password]@flame.mongohq.com:27046/[database]
options:
consistency: :strong
Run Code Online (Sandbox Code Playgroud)
此配置的结果是,当发生查询时,我收到以下错误:
The operation: #<Moped::Protocol::Query
@length=39
@request_id=5
@response_to=0
@op_code=2004
@flags=[]
@full_collection_name=".urls"
@skip=0
@limit=0
@selector={}
@fields=nil>
failed with error 13075: "db name can't be empty"
Run Code Online (Sandbox Code Playgroud)
我还测试了以下配置:
development:
uri: mongodb://[username]:[password]@flame.mongohq.com:27046/[database]
Run Code Online (Sandbox Code Playgroud)
当代码到达urls_controller的create方法时,它在@ url.save失败,并出现以下错误:
mongoid (3.0.0.rc) lib/mongoid/sessions/factory.rb:100:in `parse'
mongoid (3.0.0.rc) lib/mongoid/sessions/factory.rb:61:in `create_session'
mongoid (3.0.0.rc) lib/mongoid/sessions/factory.rb:43:in `default'
mongoid (3.0.0.rc) lib/mongoid/sessions.rb:109:in `default'
mongoid (3.0.0.rc) lib/mongoid/sessions.rb:354:in `__session__'
mongoid …Run Code Online (Sandbox Code Playgroud) 我有一个包含嵌入文档的Mongoid文档.我想搜索其中所有存在具有多个条件的嵌入式文档的顶级文档.
TopDoc.where('inside.first_name' => 'Bob', 'inside.last_name' => 'Jones')
Run Code Online (Sandbox Code Playgroud)
但在我看来,这将与Bob Wever和Paul Jones的TopDoc相匹配,这是错误的.
我正在使用mongoid(2.6.0)及其别名,这就是我的模型字段的样子
class Place
include Mongoid::Document
field :n, :as => :name, :type => String
....
Run Code Online (Sandbox Code Playgroud)
现在我有一个控制器找到一个地方并将对象作为json返回
@places = Place.find({some query})
respond_to do |format|
format.json { render json: @places }
end
Run Code Online (Sandbox Code Playgroud)
现在当我这样做
JSON.parse(response.body)
Run Code Online (Sandbox Code Playgroud)
我的回复包含字段"n"而不是"名称".
有没有办法可以让mongoid告诉我别名而不是实名?