根据github上mongoid的自述文件,我可以做一些奇特的查询,比如Person.select(:first_name,:last_name).where(:title =>"Sir").skip(10).limit(10).paginate
我和will_paginate(3.0.pre2)一起尝试了这个
@companies = Company.paginate(:per_page=>5, :page=>params[:page], :sort => [sort_column, sort_direction])
Run Code Online (Sandbox Code Playgroud)
--->工作正常
@companies = Company.all.paginate(:per_page=>5, :page=>params[:page], :sort => [sort_column, sort_direction])
Run Code Online (Sandbox Code Playgroud)
--->排序不再起作用了
我试过了
@companies = Company.where(:name=>/^#{params[:search]}/).paginate( :per_page=>5, :page=>params[:page], :sort => [sort_column, sort_direction])
Run Code Online (Sandbox Code Playgroud)
- >不起作用
然后
@companies = Company.paginate(:conditions=>{:name=>/^#{params[:search]}/}, :per_page=>5, :page=>params[:page], :sort => [sort_column, sort_direction])
Run Code Online (Sandbox Code Playgroud)
--->工作
但我认为搜索功能应该在模型中而不是在控制器中!?
我正在迁移现有的Rails应用程序以使用MongoDB(使用Mongoid),而且我在查找如何进行聚合时遇到一些麻烦,就像使用MySQL一样.
以前我有类似的东西SELECT DATE(created_at) AS day, SUM(amount) AS amount GROUP BY day,哪个会返回一个你可以在模板中循环的集合,如下所示:
:day => '2011-03-01', :amount => 55.00
:day => '2011-03-02', :amount => 45.00
etc...
Run Code Online (Sandbox Code Playgroud)
有没有人知道如何在Mongoid中做到这一点?该模型非常简单:
class Conversion
include Mongoid::Document
include Mongoid::Timestamps
field :amount, :type => Float, :default => 0.0
...
# created_at generated automatically, standard Rails...
end
Run Code Online (Sandbox Code Playgroud)
谢谢!
-Avishai
我有一个用户模型嵌入" 一对多 "的关注列表,如下所示:
class User
include Mongoid::Document
field :uid
field :name
field :user_hash
embeds_many :watchlists
end
class Watchlist
include Mongoid::Document
field :html_url
field :description
#field :name
field :fork_, :type => Boolean
field :forks, :type => Integer
field :watchers, :type => Integer
field :created_at, :type => DateTime
field :pushed_at, :type => DateTime
field :avatar_url
embedded_in :user
has_and_belongs_to_many :tags
end
Run Code Online (Sandbox Code Playgroud)
监视列表还应引用多对多 Tag模型,反之亦然:
class Tag
include Mongoid::Document
field :name, type: String
has_and_belongs_to_many :watchlists
end
Run Code Online (Sandbox Code Playgroud)
无论如何,这导致了一个错误,似乎不可能出现这种"混合"关系:
Mongoid::Errors::MixedRelations (Referencing a(n) Watchlist document from the …Run Code Online (Sandbox Code Playgroud) 我已经遇到了几个小时的问题,并且用Google搜索自己毫无意义.
我有一个带有嵌入式文档的Mongoid模型,如下所示:
embeds_many :tags, :as => :taggable
Run Code Online (Sandbox Code Playgroud)
出于某种原因,尝试删除此文档似乎在控制台中工作,但文件在重新加载后返回.我尝试过以下方法:
model.tags.delete_all
model.tags.each do |tag|
tag.delete
end
model.tags.destroy_all
Run Code Online (Sandbox Code Playgroud)
完成上述所有操作后,我可以确认model.tags返回一个空数组.然后为了安全起见,我甚至打电话给model.save.如果我重新加载模型,所有嵌入的标签都会返回.
使用Mongoid删除嵌入文档的正确方法是什么?
Mongodb noob问题!
我想做一些类似于rake db:drop但是在mongodb中,以清除我的文档的内容.
到目前为止,我已经找到命令db.dropDatabase()但是我必须从mongodb交互式shell输入它吗?(有关如何进入shell的任何提示将不胜感激,我尝试按照Mongodb网站上的说明进行操作但我无法启动并运行).
有没有更简单的方法从命令行执行此操作?
编辑:我尝试打字mongo,shell弹出大声笑.
我有一个布尔标志:finished.我是不是该
A: index({ finished: 1 })
B: index({ finished: 1 }, {sparse: true})
C: use flag :unfinished instead, to query by that
D: other?
Run Code Online (Sandbox Code Playgroud)
Ruby mongoid语法.我的大多数记录都会有flag finished = true,而且大多数操作显然都是未完成的.我不确定我是否理解何时使用稀疏,何时不使用.谢谢!
我有2个课程......文章和评论(嵌入文章中).
class Article
include Mongoid::Document
field :name, type: String
field :content, type: String
field :published_on, type: Date
validates_presence_of :name
embeds_many :comments
end
Run Code Online (Sandbox Code Playgroud)
还有一个
class Comment
include Mongoid::Document
field :name, type: String
field :content, type: String
embedded_in :article, :inverse_of => :comments
end
Run Code Online (Sandbox Code Playgroud)
这个mongodb文档的Json表示是:
{
_id:ObjectId("50ae35274b6b5eaa77000001"),
author_id:ObjectId("50ae3b1e4b6b5e8162000001"),
comments:[
{
_id:ObjectId("50ae380e4b6b5e0c34000001"),
name:"fak",
content:"i like this article
}
],
content:"article about nothing",
name:"my sweet article",
}
Run Code Online (Sandbox Code Playgroud)
如何在轨道上使用mongoid在此文档中插入另一条注释?
谢谢Fak
当我运行此命令"rails g mongoid:config"
然后显示此错误消息
"Could not find generator mongoid:config"
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?请帮我...
我已经加入gem "mongoid",并gem "rspec"在我的Gemfile
你如何使用Mongoid 5.1查询日期范围?我正在尝试类似的东西
Data.find(sid: 7, :created_at => (Time.parse('5-07-2015')..Time.now ))
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误
有任何想法吗?
无论如何,是否只为只读文档设置了created_at时间戳?
我目前有以下消息类别
class Message
include Mongoid::Document
include Mongoid::Timestamps
field :text, type: String
belongs_to :user, foreign_key: :user_id
embedded_in :conversation
end
Run Code Online (Sandbox Code Playgroud)
一切正常,但是对于每条消息,我都在使用updated_at字段浪费空间,该字段始终与created_at相同