模块:Mongoid::Contextual::Atomic

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

Overview

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

实例方法摘要折叠

实例方法详细信息

# add_each_to_set (adds) ⇒ nil

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

例子:

将值添加到集合中。

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

参数:

  • 增加 (哈希)

    操作。

返回:

  • ( nil )

    Nil.



34
35
36
# File 'lib/mongoid/contextual/atomic.rb', line 34

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.



22
23
24
# File 'lib/mongoid/contextual/atomic.rb', line 22

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

#bit(bits) ⇒ nil

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

例子:

执行按位操作。

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

参数:

  • (哈希)

    操作。

返回:

  • ( nil )

    Nil.



46
47
48
# File 'lib/mongoid/contextual/atomic.rb', line 46

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

#inc(incs) ⇒ nil

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

例子:

执行原子递增。

context.inc(likes: 10)

参数:

  • incs (哈希)

    操作。

返回:

  • ( nil )

    Nil.



58
59
60
# File 'lib/mongoid/contextual/atomic.rb', line 58

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

# mul (factors) ⇒ nil

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

例子:

执行原子乘法。

context.mul(likes: 10)

参数:

  • 因素 (哈希)

    操作。

返回:

  • ( nil )

    Nil.



70
71
72
# File 'lib/mongoid/contextual/atomic.rb', line 70

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

# Pop (pops) ⇒ nil

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

例子:

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

context.pop(members: -1)

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

context.pop(members: 1)

参数:

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

    操作。

返回:

  • ( nil )

    Nil.



85
86
87
# File 'lib/mongoid/contextual/atomic.rb', line 85

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

# pull (pulls) ⇒ nil

注意:

尚不支持表达式拉取。

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

例子:

从匹配项中提取值。

context.pull(members: "Dave")

参数:

  • pull (哈希)

    操作。

返回:

  • ( nil )

    Nil.



99
100
101
# File 'lib/mongoid/contextual/atomic.rb', line 99

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

#pull_all(pulls) ⇒ nil

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

例子:

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

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

参数:

  • pull (哈希)

    操作。

返回:

  • ( nil )

    Nil.



111
112
113
# File 'lib/mongoid/contextual/atomic.rb', line 111

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

# push (push) ⇒ nil

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

例子:

将值推送到匹配的Docs 。

context.push(members: "Alan")

参数:

  • 推送 (哈希)

    操作。

返回:

  • ( nil )

    Nil.



123
124
125
# File 'lib/mongoid/contextual/atomic.rb', line 123

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

# push_all (push) ⇒ nil

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

例子:

将值推送到匹配的Docs 。

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

参数:

  • 推送 (哈希)

    操作。

返回:

  • ( nil )

    Nil.



135
136
137
# File 'lib/mongoid/contextual/atomic.rb', line 135

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

# rename (renames) ⇒ nil

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

例子:

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

context.rename(members: :artists)

参数:

  • renames (哈希)

    操作。

返回:

  • ( nil )

    Nil.



147
148
149
150
151
152
153
# File 'lib/mongoid/contextual/atomic.rb', line 147

def 改名(renames)
  操作 = renames.注入({}) 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.



163
164
165
# File 'lib/mongoid/contextual/atomic.rb', line 163

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.



223
224
225
# File 'lib/mongoid/contextual/atomic.rb', line 223

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,给定值] 中的最小值。 其作用是确保每个字段不大于给定值;换言之,给定值是该字段的有效最大值

例子:

将“views”设置为不超过100 。

context.set_min(views: 100)

参数:

  • 字段 (哈希)

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

返回:

  • ( nil )

    Nil.



200
201
202
# File 'lib/mongoid/contextual/atomic.rb', line 200

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.



178
179
180
# File 'lib/mongoid/contextual/atomic.rb', line 178

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