模块:Mongoid::Persistable::Pushable
Overview
定义 $push 和 $addToSet 操作的行为。
实例方法摘要折叠
-
# add_to_set (adds) ⇒ 文档
仅当数组中尚不存在该值时,才将单个值添加到大量中。
-
# push (push) ⇒ 文档
将单个值或多个值推入数组。
实例方法详细信息
# add_to_set (adds) ⇒文档
仅当数组中尚不存在该值时,才将单个值添加到大量中。
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) ⇒文档
将单个值或多个值推入数组。
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 |