模块:Mongoid::Persistable::Pushable

扩展方式:
ActiveSupport::Concern
包含在:
Mongoid::Persistable
定义于:
lib/mongoid/persistable/pushable.rb

Overview

定义 $push 和 $addToSet 操作的行为。

实例方法摘要折叠

实例方法详细信息

# add_to_set (adds) ⇒文档

仅当数组中尚不存在该值时,才将单个值添加到大量中。

例子:

将值添加到集合中。

document.add_to_set(names: "James", aliases: "Bond")

参数:

  • 增加 (哈希)

    要添加的字段/值对。

返回:



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/mongoid/persistable/pushable.rb', line 20

def add_to_set(增加)
  prepare_atomic_operation do |运维|
    process_atomic_operations(增加) do |字段, |
      现有的 = 发送(字段) || 属性[字段]
      if 现有的.nil?
        属性[字段] = []
        # 从属性中读取值:
        # https://jira.mongodb.org/browse/MONGOID- 4874
        现有的 = 属性[字段]
      end
      values = [  ].展平(1)
      values. do |val|
        现有的.推动(val) 除非 现有的.包括?(val)
      end
      运维[atomic_attribute_name(字段)] = { " $each " => values }
    end
    { "$addToSet" => 运维 }
  end
end

# push (push) ⇒文档

将单个值或多个值推入数组。

例子:

将单个值推入数组。

document.push(names: "James", aliases: "007")

将多个值推入数组。

document.push(names: [ "James", "Bond" ])

参数:

  • 推送 (哈希)

    $push 操作。

返回:



51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/mongoid/persistable/pushable.rb', line 51

def 推动(推送)
  prepare_atomic_operation do |运维|
    process_atomic_operations(推送) do |字段, |
      现有的 = 发送(字段) || 开始
        属性[字段] ||= []
        属性[字段]
      end
      values = [  ].展平(1)
      values.{ |val| 现有的.推动(val) }
      运维[atomic_attribute_name(字段)] = { " $each " => values }
    end
    { " $push " => 运维 }
  end
end