模块:Mongoid::Criteria::Queryable::Optional

扩展方式:
可宏
包含在:
Mongoid::Criteria::Queryable
定义于:
lib/mongoid/criteria/queryable/Optional.rb

Overview

可选模块包括与查询周围的额外的选项有关的所有行为,例如跳过、限制、排序等。

实例属性摘要折叠

类方法摘要折叠

实例方法摘要折叠

Macroable包含的方法

key

实例属性详细信息

# options对象

返回属性选项的值。



14
15
16
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 14

def 选项
  @options
end

# options查询选项。 (查询选项。) ⇒对象



14
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 14

attr_accessor :options

类方法详细信息

ForwardablesArray<Symbol>

获取可从模型转发到的可选选项的方法。

例子:

获取可转发方法。

Optional.forwardables

返回:

  • ( Array<Symbol> )

    可转发方法的名称。



374
375
376
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 374

def Forwardables
  public_instance_methods(false) - [ :options, :options= ]
end

实例方法详细信息

# ascending (*fields) ⇒可选也称为: asc

为所有提供的字段添加升序排序选项。

例子:

添加升序排序。

optional.ascending(:first_name, :last_name)

参数:

  • *fields (符号... )

    要排序的字段。

返回:

  • 可选

    克隆的可选项。



24
25
26
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 24

def ascending(*字段)
  sort_with_list(*字段, 1)
end

# batch_size (value = nil) ⇒可选

添加用于告知MongoDB在批处理中要检索多少文档的选项。

例子:

应用批处理大小选项。

optional.batch_size(500)

参数:

  • 整数 (默认为: nil

    批量大小。

返回:

  • 可选

    克隆的可选项。



40
41
42
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 40

def batch_size( = nil)
  选项() { |选项| 选项.存储(:batch_size, ) }
end

# collation (collation_doc) ⇒可选

设置排序规则。

例子:

设置排序规则。

optional.collation(locale: 'fr', strength: 2)

参数:

  • collation_doc (哈希)

    描述要使用的排序规则的文档。

返回:

  • 可选

    克隆的可选项。



303
304
305
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 303

def 排序规则(collation_doc)
  克隆.点击 { |查询| 查询.选项.存储(:collation, collation_doc) }
end

#comment(comment = nil) ⇒ Optional

注意:

将 profilingLevel 设置为2 ,评论将与查询一起记录在配置文件集合中。

将注释与查询关联。

例子:

添加评论。

optional.comment('slow query')

参数:

  • comment string (默认为: nil

    与查询相关的注释。

返回:

  • 可选

    克隆的可选项。



274
275
276
277
278
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 274

def comment(comment = nil)
  克隆.点击 do |查询|
    查询.选项.存储(:comment, comment)
  end
end

# cursor_type (type) ⇒可选

注意:

游标的类型可以是 :tailable 或 :tailable_await。

设置游标类型。

例子:

设置游标类型。

optional.cursor_type(:tailable)
optional.cursor_type(:tailable_await)

参数:

  • 类型 (符号)

    要创建的游标类型。

返回:

  • 可选

    克隆的可选项。



291
292
293
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 291

def cursor_type(类型)
  克隆.点击 { |查询| 查询.选项.存储(:cursor_type, 类型) }
end

#降序(*fields) ⇒可选也称为: desc

为所有提供的字段添加降序排序选项。

例子:

添加降序排序。

optional.descending(:first_name, :last_name)

参数:

  • *fields (符号... )

    要排序的字段。

返回:

  • 可选

    克隆的可选项。



52
53
54
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 52

def descending(*字段)
  sort_with_list(*字段, -1)
end

#hint (value = nil) ⇒可选

将索引提示添加到查询选项。

例子:

Add an index hint.

optional.hint("$natural" => 1)

参数:

  • 哈希 (默认为: nil

    索引提示。

返回:

  • 可选

    克隆的可选项。



67
68
69
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 67

def 提示( = nil)
  选项() { |选项| 选项.存储(:hint, ) }
end

#limit(value = nil) ⇒ Optional

在返回的结果中添加要限制的文档数量。

例子:

限制返回文档的数量。

optional.limit(20)

参数:

  • 整数 (默认为: nil

    要返回的文档数量。

返回:

  • 可选

    克隆的可选项。



79
80
81
82
83
84
85
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 79

def limit( = nil)
  选项() do |选项, 查询|
    val = .to_i
    选项.存储(:limit, val)
    查询.管道.推动(" $limit " => val) if 正在聚合?
  end
end

# max_scan (value = nil) ⇒可选

添加用于限制集合中已扫描文档数量的选项。

例子:

添加最大扫描限制。

optional.max_scan(1000)

参数:

  • 整数 (默认为: nil

    要扫描的最大文档数。

返回:

  • 可选

    克隆的可选项。



96
97
98
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 96

def max_scan( = nil)
  选项() { |选项| 选项.存储(:max_scan, ) }
end

# max_time_ms (value = nil) ⇒可选

为游标上的处理操作添加累积时间限制(以毫秒为单位)。

例子:

添加 max time ms 选项。

optional.max_time_ms(200)

参数:

  • 整数 (默认为: nil

    处理游标操作的最长时间(以毫秒为单位)。

返回:

  • 可选

    克隆的可选项。



108
109
110
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 108

def max_time_ms( = nil)
  选项() { |选项| 选项.存储(:max_time_ms, ) }
end

# no_timeout可选

指示查询不要超时。

例子:

指示查询不要超时。

optional.no_timeout

返回:

  • 可选

    克隆的可选项。



118
119
120
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 118

def no_timeout
  克隆.点击 { |查询| 查询.选项.存储(:timeout, false) }
end

# only (*args) ⇒可选

将结果限制为仅包含所提供的字段。

例子:

将结果限制为提供的字段。

optional.only(:name, :dob)

参数:

  • *args (符号... )

    要返回的字段。

返回:

  • 可选

    克隆的可选项。



130
131
132
133
134
135
136
137
138
139
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 130

def only(*args)
  args = args.展平
  选项(*args) do |选项|
    选项.存储(
      :fields,
      args.注入(选项[:fields] || {}){ |, 字段| .点击 { [字段] = 1 }},
      false
    )
  end
end

# order_by (*spec) ⇒可选也称为: order

在选项中添加排序条件。

例子:

通过具有整数方向的哈希添加排序选项。

optional.order_by(name: 1, dob: -1)

通过带有符号方向的哈希添加排序选项。

optional.order_by(name: :asc, dob: :desc)

通过带有string方向的哈希添加排序选项。

optional.order_by(name: "asc", dob: "desc")

通过具有整数方向的大量添加排序选项。

optional.order_by([[ name, 1 ], [ dob, -1 ]])

通过带有符号方向的大量添加排序选项。

optional.order_by([[ :name, :asc ], [ :dob, :desc ]])

通过带有string方向的大量添加排序选项。

optional.order_by([[ "name", "asc" ], [ "dob", "desc" ]])

添加带键的排序选项。

optional.order_by(:name.asc, :dob.desc)

通过string添加排序选项。

optional.order_by("name ASC, dob DESC")

参数:

  • *spec ( [ Array | Hash | string ]... )

    排序规范。

返回:

  • 可选

    克隆的可选项。



170
171
172
173
174
175
176
177
178
179
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 170

def order_by(*spec)
  选项(spec) do |选项, 查询|
    spec.compact. do |criterion|
      criterion.__sort_option__.each_pair do |字段, 方向|
        add_sort_option(选项, 字段, 方向)
      end
      查询.管道.推动(" $sort " => 选项[:sort]) if 正在聚合?
    end
  end
end

# reorder (*spec) ⇒可选

使用此方法可以将现有排序完全替换为所提供的排序,而不是合并排序条件。

例子:

替换顺序。

optional.reorder(name: :asc)

参数:

  • *spec ( [ Array | Hash | string ]... )

    排序规范。

返回:

  • 可选

    克隆的可选项。



191
192
193
194
195
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 191

def 重新排序(*spec)
  克隆.点击 do |查询|
    查询.选项.删除(:sort)
  end.order_by(*spec)
end

# skip (value = nil) ⇒可选也称为:偏移量

添加要跳过的文档数量。

例子:

添加要跳过的数字。

optional.skip(100)

参数:

  • 整数 (默认为: nil

    要跳过的数字。

返回:

  • 可选

    克隆的可选项。



205
206
207
208
209
210
211
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 205

def 跳过( = nil)
  选项() do |选项, 查询|
    val = .to_i
    选项.存储(:skip, val)
    查询.管道.推动(" $skip " => val) if 正在聚合?
  end
end

# slice (criterion = nil) ⇒可选

通过对嵌入式数组进行切片来限制返回的结果。

例子:

对返回结果进行切片。

optional.slice(aliases: [ 0, 5 ])

参数:

  • criterion 哈希 (默认为: nil

    切片选项。

返回:

  • 可选

    克隆的可选项。



222
223
224
225
226
227
228
229
230
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 222

def slice(criterion = nil)
  选项(criterion) do |选项|
    选项.__union__(
      字段: criterion.注入({}) do |选项, (字段, val)|
        选项.点击 { |opt| opt.存储(字段, { " $slice " => val }) }
      end
    )
  end
end

# 快照可选

让查询在快照模式下运行。

例子:

添加快照选项。

optional.snapshot

返回:

  • 可选

    克隆的可选项。



238
239
240
241
242
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 238

def snapshot
  克隆.点击 do |查询|
    查询.选项.存储(:快照, true)
  end
end

# without (*args) ⇒可选

将结果限制为仅包含未提供的字段。

例子:

将结果限制为未提供的字段。

optional.without(:name, :dob)

参数:

  • *args (符号... )

    要忽略的字段。

返回:

  • 可选

    克隆的可选项。



252
253
254
255
256
257
258
259
260
261
# File 'lib/mongoid/criteria/queryable/Optional.rb', line 252

def 没有(*args)
  args = args.展平
  选项(*args) do |选项|
    选项.存储(
      :fields,
      args.注入(选项[:fields] || {}){ |, 字段| .点击 { [字段] = 0 }},
      false
    )
  end
end