2

我基本上有一个User对象,其中定义的是一个数组field phone_numbers。我想获取我的数据库中phone_numbers计数大于的所有用户对象1

是否有资源可以了解此类查询?我在网上找不到任何有用的东西,因为大多数结果都是为了更简单的查询。

代码:

class Location
  include Mongoid::Document

  field :name
  field :phone_numbers, type: Array
end

我尝试了以下但没有奏效:

Location.where("this.phone_numbers.count < 1").count

谢谢!

4

3 回答 3

1

将无法通过查询检查此信息...在您的文档中创建一个字段,该字段将保留phone_numbers数组的计数,每次像这样更新您保存文档的值

class Location
   include Mongoid::Document

   field :name
   field :phone_numbers, type: Array
   field :phone_number_count, type: Integer

   after_save do |location|
      if location.phone_numbers.blank?
         location.phone_number_count = 0
      else
         location.phone_number_count = location.phone_numbers.size 
      end
      location.save
   end
end

然后您可以运行查询

Location.where(:phone_number_count.gt => 1).enteries
于 2012-09-19T09:55:51.630 回答
1

phone_numbers[0]此查询搜索字段中是否存在任何对象

Location.where(:"phone_numbers.0".exists => true).count

此查询解决了您的电话号码计数大于 1 的问题;如果存在该字段phone_numbers[0],则表示数组中至少有电话号码

于 2016-06-02T13:41:49.613 回答
0

尝试这个:

Location.where(:phone_numbers.gte => '1').count
于 2012-09-14T23:17:54.333 回答