模块:Mongoid::Contextual::Atomic

定义于:
lib/mongoid/contextual/atomic.rb

Overview

Mongoid::Criteria 中包含的 Mixin 模块为 MongoDB 的更新操作符($ 设立、$pull、$inc 等)提供了直接方法接口这些操作符可用于更新数据库中条件范围内的所有document,而无需将每个document加载到 Mongoid 的内存中。

实例方法摘要折叠

实例方法详细信息

# add_each_to_set (adds) ⇒ nil

对匹配文档执行原子 $addToSet/$each。

例子:

将值添加到集合中。

context.add_each_to_set(members: ["Dave", "Bill"], genres: ["Electro", "Disco"])

参数:

  • 增加 (哈希)

    操作。

返回:

  • ( nil )

    Nil.



31
32
33
# File 'lib/mongoid/contextual/atomic.rb', line 31

def add_each_to_set(增加)
  查看.update_many(' $addToSet ' => collect_each_operations(增加))
end

#add_to_set(adds) ⇒ nil

对匹配文档执行原子 $addToSet。

例子:

将值添加到集合中。

context.add_to_set(members: "Dave", genres: "Electro")

参数:

  • 增加 (哈希)

    操作。

返回:

  • ( nil )

    Nil.



19
20
21
# File 'lib/mongoid/contextual/atomic.rb', line 19

def add_to_set(增加)
  查看.update_many(' $addToSet ' => collect_operations(增加))
end

#bit(bits) ⇒ nil

对匹配文档执行原子 $bit 操作。

例子:

执行按位操作。

context.bit(likes: { and: 14, or: 4 })

参数:

  • (哈希)

    操作。

返回:

  • ( nil )

    Nil.



43
44
45
# File 'lib/mongoid/contextual/atomic.rb', line 43

def Bit()
  查看.update_many('$bit' => collect_operations())
end

#inc(incs) ⇒ nil

对匹配文档执行原子 $inc 操作。

例子:

执行原子递增。

context.inc(likes: 10)

参数:

  • incs (哈希)

    操作。

返回:

  • ( nil )

    Nil.



55
56
57
# File 'lib/mongoid/contextual/atomic.rb', line 55

def inc(incs)
  查看.update_many(' $inc ' => collect_operations(incs))
end

# mul (factors) ⇒ nil

对匹配文档执行原子 $mul 操作。

例子:

执行原子乘法。

context.mul(likes: 10)

参数:

  • 因素 (哈希)

    操作。

返回:

  • ( nil )

    Nil.



67
68
69
# File 'lib/mongoid/contextual/atomic.rb', line 67

def mul(因素)
  查看.update_many('$mul' => collect_operations(因素))
end

# Pop (pops) ⇒ nil

对匹配文档执行原子 $pop 操作。

例子:

弹出匹配项上的第一个值。

context.pop(members: -1)

弹出匹配项上的最后一个值。

context.pop(members: 1)

参数:

  • 持久性有机污染物 (哈希)

    操作。

返回:

  • ( nil )

    Nil.



82
83
84
# File 'lib/mongoid/contextual/atomic.rb', line 82

def Pop(持久性有机污染物)
  查看.update_many('$pop' => collect_operations(持久性有机污染物))
end

# pull (pulls) ⇒ nil

注意:

尚不支持表达式拉取。

对匹配文档执行原子 $pull 操作。

例子:

从匹配项中提取值。

context.pull(members: "Dave")

参数:

  • pull (哈希)

    操作。

返回:

  • ( nil )

    Nil.



96
97
98
# File 'lib/mongoid/contextual/atomic.rb', line 96

def pull(pull)
  查看.update_many('$pull' => collect_operations(pull))
end

#pull_all(pulls) ⇒ nil

对匹配文档执行原子 $pullAll 操作。

例子:

从匹配项中提取所有匹配值。

context.pull_all(:members, [ "Alan", "Vince" ])

参数:

  • pull (哈希)

    操作。

返回:

  • ( nil )

    Nil.



108
109
110
# File 'lib/mongoid/contextual/atomic.rb', line 108

def pull_all(pull)
  查看.update_many('$pullAll' => collect_operations(pull))
end

# push (push) ⇒ nil

对匹配文档执行原子 $push 操作。

例子:

将值推送到匹配的Docs 。

context.push(members: "Alan")

参数:

  • 推送 (哈希)

    操作。

返回:

  • ( nil )

    Nil.



120
121
122
# File 'lib/mongoid/contextual/atomic.rb', line 120

def 推动(推送)
  查看.update_many('$push' => collect_operations(推送))
end

# push_all (push) ⇒ nil

对匹配文档执行原子 $push/$each 操作。

例子:

将值推送到匹配的Docs 。

context.push_all(members: [ "Alan", "Fletch" ])

参数:

  • 推送 (哈希)

    操作。

返回:

  • ( nil )

    Nil.



132
133
134
# File 'lib/mongoid/contextual/atomic.rb', line 132

def push_all(推送)
  查看.update_many('$push' => collect_each_operations(推送))
end

# rename (renames) ⇒ nil

对匹配文档上的字段执行原子 $rename。

例子:

重命名匹配文档上的字段。

context.rename(members: :artists)

参数:

  • renames (哈希)

    操作。

返回:

  • ( nil )

    Nil.



144
145
146
147
148
149
# File 'lib/mongoid/contextual/atomic.rb', line 144

def 改名(renames)
  操作 = renames.each_with_object({}) do |(old_name, new_name), 运维|
    运维[old_name] = new_name.to_s
  end
  查看.update_many('$rename' => collect_operations(操作))
end

# set (sets) ⇒ nil

对匹配文档执行字段的原子 $set。

例子:

设置匹配项的字段值。

context.set(name: "Depeche Mode")

参数:

  • (哈希)

    操作。

返回:

  • ( nil )

    Nil.



159
160
161
# File 'lib/mongoid/contextual/atomic.rb', line 159

def ()
  查看.update_many(' $set ' => collect_operations())
end

# set_max (fields) ⇒ nil也称为: clip_lower_bound

注意:

由于 Mongoid::Contextual::Aggregable::Mongo#max 的存在,该方法不能命名为 #max,从而打破了其他类似方法根据其执行的MongoDB操作来命名的惯例。

对给定一个或多个字段执行原子 $max更新操作。 每个字段将被设立为 [current_value,给定值] 中的最大值。 其作用是确保每个字段不小于给定值;换言之,给定值是该字段的有效最小值

例子:

将“views”设置为不小于 100。

context.set_max(views: 100)

参数:

  • 字段 (哈希)

    每个字段可以设立的最小值。

返回:

  • ( nil )

    Nil.



219
220
221
# File 'lib/mongoid/contextual/atomic.rb', line 219

def set_max(字段)
  查看.update_many(' $max ' => collect_operations(字段))
end

# set_min (fields) ⇒ nil也称为: clip_upper_bound

注意:

由于 Mongoid::Contextual::Aggregable::Mongo#min 的存在,该方法不能命名为 #min,从而打破了其他类似方法根据其执行的MongoDB操作来命名的惯例。

对给定的一个或多个字段执行原子 $min更新操作。 每个字段都将设立为 [current_value,给定值] 中的最小值。 其作用是确保每个字段不大于给定值;换言之,给定值是该字段的有效最大值

例子:

将“视图”设置为不超过 100。

context.set_min(views: 100)

参数:

  • 字段 (哈希)

    每个字段可以设立的最大值。

返回:

  • ( nil )

    Nil.



196
197
198
# File 'lib/mongoid/contextual/atomic.rb', line 196

def set_min(字段)
  查看.update_many('$min' => collect_operations(字段))
end

#unset(*unsets) ⇒ nil

对匹配文档上的字段执行原子 $unset。

例子:

取消设置匹配项上的字段。

context.unset(:name)

参数:

  • *unsets ( [ string | Symbol | Array< string | Symbol> | Hash ]... )

    要取消设置的字段的名称。 如果指定了哈希,则无论值如何,都将使用其键,即使值为 nil 或 false。

返回:

  • ( nil )

    Nil.



174
175
176
# File 'lib/mongoid/contextual/atomic.rb', line 174

def 未设置(*取消设置)
  查看.update_many('$unset' => collect_unset_operations(取消设置))
end