标签: mongoid

mongoid排序问题

我一直在用mongoid存储数据.我有一个场景,我必须根据他们的家属数量对父母进行排序.我的模型很简单:

父模型references_many dependents stored_as => array
依赖模型reference_many父项stored_as => array

我不想遍历父节点,找到dependents的数量,将它们存储在一个数组中并将它们转储到我的视图中.

我需要的是只用一个查询根据家属的数量对父母进行排序.那可能吗?

谢谢.

sorting model mongoid

3
推荐指数
1
解决办法
3001
查看次数

Rails应用程序中Mongoid logger的未定义方法`level`

我看到了这个:

undefined method `level' for #<Mongoid::Logger:0xcd1a1f>
Run Code Online (Sandbox Code Playgroud)

当我在我的init中设置Mongoid记录器时.记录器通过简单的方式设置:

Mongoid.logger = Logger.new($stdout)
Run Code Online (Sandbox Code Playgroud)

在global.rb中

这是什么问题?如何让Mongoid登录我自己的记录器,以便查看一些查询?

我也试图无济于事:

Mongoid.logger = Logger.new($stdout, :info)
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails mongodb mongoid

3
推荐指数
1
解决办法
1668
查看次数

Mongoid Group By或MongoDb group by in rails

我有一个mongo表,其中包含如下统计数据....

所以我的班级如下......

class Statistic
  include Mongoid::Document
  include Mongoid::Timestamps
  include Mongoid::Paranoia

  field :course_id, type: Integer
  field :status, type: String # currently this is either play or complete
Run Code Online (Sandbox Code Playgroud)

我想每天获得一个课程总数的数量.所以例如... 8/1/12有2个剧本,8/2/12有6个剧本.等等.因此我将使用created_at时间戳字段,使用course_id和action.问题是我没有看到Mongoid中的group by方法.我相信mongodb现在有一个,但我不确定如何在rails 3中完成.

我可以使用每个来运行表格,并在轨道中加入一些地图或散列,但是如果课程有100万个视图,那么检索和迭代超过一百万条记录可能会很麻烦.有干净的方法吗?

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

3
推荐指数
1
解决办法
6995
查看次数

update_attributes用于许多具有mongoid的对象

可能是这样的:

@users = User.criteria.for_ids(params[:user_ids])
@users.update_all(:suspend => true)
Run Code Online (Sandbox Code Playgroud)

代替:

for u in @users
 u.suspend = true
 u.update_attributes
end
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails mongoid ruby-on-rails-3 ruby-on-rails-3.1

3
推荐指数
1
解决办法
2195
查看次数

使用MongoDB时我应该如何设计Users and Friends表(Rails)

我正在一个社交网络项目中工作,建议的数据库是MongoDB。

我之前曾参与过各种项目,并在关系数据库系统中设计了数据库,但是由于我是NoSQL db(MongoDB)的新手。我一直在设计东西。

考虑下面的示例,

1)该应用程序将具有“用户和朋友”表来保存用户和用户的数据。

现在,下面的设计正确吗?

用户:

_id       username password other_fields
----------------------------------------
2gsyexej2 balan    adsfasf  ..
Run Code Online (Sandbox Code Playgroud)

user_friends:

_id user_id friends
--------------------
1  2gsyexej2 friends
               - 0 
                 - friend_user_id = asdfdf23adfsasdf
               - 1
                  - friend_user_id = efex89sdfsw0dfssf
                        etc., 
Run Code Online (Sandbox Code Playgroud)

在以上模型中,我使用了“手册参考”,从用户表中获取了用户ID,并将其用作user_friends表中的参考。

这种方法正确吗?如果没有,请提出一个更好的方法。

谢谢,

巴兰

ruby-on-rails mongodb mongoid

3
推荐指数
1
解决办法
5112
查看次数

Mongoid嵌入式关系扩展中的父对象

给定与这样的扩展的简单嵌入关系:

class D
  include Mongoid::Document
  embeds_many :es do
    def m
      #...
    end
  end
end

class E
  include Mongoid::Document
  embedded_in :d
end
Run Code Online (Sandbox Code Playgroud)

你可以这样说:

d = D.find(id)
d.es.m
Run Code Online (Sandbox Code Playgroud)

在扩展程序的m方法中,如何访问d我们正在使用的特定内容?

mongoid mongoid3 embedded-documents

3
推荐指数
1
解决办法
556
查看次数

Mongoid'或'和'in' - 查询多个数组

我在Mongo中有一个带有两个数组字段的文档:

field   :app_usernames,     type:  Array 
field   :email_addresses,   type:  Array
Run Code Online (Sandbox Code Playgroud)

我想创建一个函数,它将一组用户名和一组电子邮件地址用于搜索集合.踢球者是我希望它返回具有数组中传递的任何值的文档:

def find_people(usernames_to_search, emails_to_search)...
Run Code Online (Sandbox Code Playgroud)

所以给出一个带字段值的文档:

app_usernames = ['test1','test2','test3']
email_addresses = ['test1@test.com','test2@test.com']
Run Code Online (Sandbox Code Playgroud)

我希望函数在通过数组参数搜索任何值时找到它.它应该在以下情况下返回此文档:

find_people nil,['test1@test.com']
find_people ['test3'],['test1@test.com']
find_people ['oldusername'],['test1@test.com']
Run Code Online (Sandbox Code Playgroud)

最后一个似乎给我带来了麻烦.

到目前为止,我已经尝试过

.or(:app_usernames.in usernames_to_search, :email_addresses.in emails_to_search)
Run Code Online (Sandbox Code Playgroud)

但无济于事.

ruby hash mongodb mongoid mongoid4

3
推荐指数
1
解决办法
1440
查看次数

Mongoid:如何在Hash字段上验证特定键的值?

在Mongoid中,我可以在类型为Hash的字段的属性上设置索引,如下所示:

index({ "details.fullName" => 1 }, { name: "full_name_index" })
Run Code Online (Sandbox Code Playgroud)

我想做的是使用以下内容为这些实体创建验证:

validates "details.fullName", presence: true
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会产生以下错误:

NoMethodError:未定义的方法`details.fullName'用于Thing

我是否犯了语法错误,或者是否在Mongoid 3中不支持此功能?

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

3
推荐指数
2
解决办法
2527
查看次数

使用mongolab的heroku的mongodb.yml

我尝试使用mongolab(仅限rails框架)将我的新rails应用程序部署到heroku

$ rails new myapp --skip-active-record
$ cd myapp
Run Code Online (Sandbox Code Playgroud)

湾 将Gems添加到Gemfile

ruby '2.2.0'
gem 'mongoid', '~> 4', github: 'mongoid/mongoid'
gem 'bson_ext'
group :production do
  gem 'rails_12factor'
end
Run Code Online (Sandbox Code Playgroud)

C.捆绑这些宝石并生成mongoid.yml

$ bundle install
$ rails g mongoid:config
Run Code Online (Sandbox Code Playgroud)

d.config mongoid.yml添加/修改生产以使用mongolab

mongoid.yml

production:
  sessions:
    default:
      uri: <%= ENV['MONGOLAB_URI'] %>
Run Code Online (Sandbox Code Playgroud)

即 创建git和heroku应用程序

$ git init
$ git add .
$ git commit -am 'Initial Commit'  

$ heroku login
$ heroku apps:create myapp
Run Code Online (Sandbox Code Playgroud)

F.插件蒙古包

$ heroku addons:add mongolab
Run Code Online (Sandbox Code Playgroud)

和mongolab沙箱显示:

蒙古拉沙箱:

To connect using the shell:
mongo …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails heroku mongoid mlab

3
推荐指数
1
解决办法
1976
查看次数

Rails(Mongoid)模型中的条件默认值

这可能看起来像一个矛盾,一个"条件默认",但我想知道是否有一种方法,我只能在对象不是某种类型的情况下轻松处理为字段设置默认值.

例如,我有

field :object_type, type: String
field :price, type: Float, default: 0
validates :price, presence: true, numericality: { greater_than_or_equal_to: 0 }
Run Code Online (Sandbox Code Playgroud)

如果我可以添加一个条件unless: ->{ object_type == "a"}并且照顾这个内联,那将是很好的.rails会允许或者我现在必须使用before_create回调设置此条件默认值吗?

我希望发生的伪代码:

  • 如果object_type是除"a"之外的任何其他类型,那么我想将price的默认值设置为零.

  • 如果对象类型是a,我只希望零和非负数值可以接受

ruby-on-rails mongoid

3
推荐指数
1
解决办法
3550
查看次数