mongoid 5.2.1 → 5.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- checksums.yaml.gz.sig +1 -0
- data.tar.gz.sig +0 -0
- data/lib/mongoid/atomic.rb +1 -1
- data/lib/mongoid/atomic/modifiers.rb +12 -8
- data/lib/mongoid/attributes.rb +1 -2
- data/lib/mongoid/attributes/dynamic.rb +3 -2
- data/lib/mongoid/attributes/nested.rb +1 -1
- data/lib/mongoid/attributes/processing.rb +0 -4
- data/lib/mongoid/changeable.rb +1 -1
- data/lib/mongoid/clients/options.rb +3 -2
- data/lib/mongoid/contextual/atomic.rb +9 -6
- data/lib/mongoid/contextual/geo_near.rb +3 -2
- data/lib/mongoid/contextual/map_reduce.rb +4 -0
- data/lib/mongoid/contextual/memory.rb +1 -1
- data/lib/mongoid/contextual/mongo.rb +3 -3
- data/lib/mongoid/contextual/none.rb +2 -2
- data/lib/mongoid/copyable.rb +0 -4
- data/lib/mongoid/criteria.rb +1 -1
- data/lib/mongoid/criteria/findable.rb +3 -2
- data/lib/mongoid/criteria/includable.rb +2 -2
- data/lib/mongoid/errors/delete_restriction.rb +2 -2
- data/lib/mongoid/errors/inverse_not_found.rb +1 -1
- data/lib/mongoid/extensions/hash.rb +3 -2
- data/lib/mongoid/extensions/object.rb +2 -2
- data/lib/mongoid/extensions/time.rb +1 -1
- data/lib/mongoid/factory.rb +0 -1
- data/lib/mongoid/fields/foreign_key.rb +2 -2
- data/lib/mongoid/findable.rb +1 -1
- data/lib/mongoid/indexable.rb +3 -2
- data/lib/mongoid/indexable/specification.rb +1 -1
- data/lib/mongoid/interceptable.rb +2 -2
- data/lib/mongoid/loggable.rb +1 -1
- data/lib/mongoid/matchable.rb +2 -2
- data/lib/mongoid/persistable.rb +0 -3
- data/lib/mongoid/persistable/creatable.rb +0 -2
- data/lib/mongoid/query_cache.rb +5 -1
- data/lib/mongoid/relations/accessors.rb +1 -2
- data/lib/mongoid/relations/bindings/embedded/in.rb +0 -4
- data/lib/mongoid/relations/bindings/embedded/many.rb +1 -8
- data/lib/mongoid/relations/bindings/embedded/one.rb +0 -10
- data/lib/mongoid/relations/bindings/referenced/many.rb +0 -4
- data/lib/mongoid/relations/builders/embedded/one.rb +1 -1
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +1 -1
- data/lib/mongoid/relations/conversions.rb +1 -1
- data/lib/mongoid/relations/counter_cache.rb +10 -10
- data/lib/mongoid/relations/eager/base.rb +4 -4
- data/lib/mongoid/relations/embedded/batchable.rb +33 -9
- data/lib/mongoid/relations/embedded/in.rb +1 -3
- data/lib/mongoid/relations/embedded/many.rb +4 -5
- data/lib/mongoid/relations/embedded/one.rb +1 -3
- data/lib/mongoid/relations/macros.rb +2 -1
- data/lib/mongoid/relations/metadata.rb +3 -3
- data/lib/mongoid/relations/nested_builder.rb +1 -1
- data/lib/mongoid/relations/proxy.rb +3 -2
- data/lib/mongoid/relations/referenced/in.rb +1 -4
- data/lib/mongoid/relations/referenced/many.rb +3 -5
- data/lib/mongoid/relations/referenced/many_to_many.rb +1 -1
- data/lib/mongoid/relations/referenced/one.rb +0 -2
- data/lib/mongoid/relations/reflections.rb +2 -2
- data/lib/mongoid/scopable.rb +2 -2
- data/lib/mongoid/serializable.rb +3 -2
- data/lib/mongoid/tasks/database.rb +2 -1
- data/lib/mongoid/threaded.rb +4 -4
- data/lib/mongoid/validatable.rb +1 -1
- data/lib/mongoid/validatable/macros.rb +4 -2
- data/lib/mongoid/version.rb +1 -1
- data/spec/mongoid/atomic/modifiers_spec.rb +17 -17
- data/spec/mongoid/atomic_spec.rb +17 -17
- data/spec/mongoid/clients/options_spec.rb +9 -0
- data/spec/mongoid/contextual/atomic_spec.rb +3 -3
- data/spec/mongoid/persistable/savable_spec.rb +2 -2
- data/spec/mongoid/persistable/updatable_spec.rb +2 -2
- data/spec/mongoid/positional_spec.rb +10 -10
- data/spec/spec_helper.rb +1 -1
- metadata +440 -418
- metadata.gz.sig +0 -0
data/lib/mongoid/findable.rb
CHANGED
@@ -71,7 +71,7 @@ module Mongoid
|
|
71
71
|
# @example Do any documents exist for the conditions?
|
72
72
|
# Person.exists?
|
73
73
|
#
|
74
|
-
# @
|
74
|
+
# @return [ true, false ] If any documents exist for the conditions.
|
75
75
|
def exists?
|
76
76
|
with_default_scope.exists?
|
77
77
|
end
|
data/lib/mongoid/indexable.rb
CHANGED
@@ -90,7 +90,7 @@ module Mongoid
|
|
90
90
|
# index({ name: 1 }, { background: true })
|
91
91
|
# end
|
92
92
|
#
|
93
|
-
# @param [ Symbol ]
|
93
|
+
# @param [ Symbol ] spec The index spec.
|
94
94
|
# @param [ Hash ] options The index options.
|
95
95
|
#
|
96
96
|
# @return [ Hash ] The index options.
|
@@ -108,7 +108,8 @@ module Mongoid
|
|
108
108
|
# @example Get the index specification.
|
109
109
|
# Model.index_specification(name: 1)
|
110
110
|
#
|
111
|
-
# @param [ Hash ]
|
111
|
+
# @param [ Hash ] index_hash The index key/direction pair.
|
112
|
+
# @param [ String ] index_name The index name.
|
112
113
|
#
|
113
114
|
# @return [ Specification ] The found specification.
|
114
115
|
#
|
@@ -99,7 +99,7 @@ module Mongoid
|
|
99
99
|
# @example Normalize the index options.
|
100
100
|
# specification.normalize_options(drop_dups: true)
|
101
101
|
#
|
102
|
-
# @param [ Hash ]
|
102
|
+
# @param [ Hash ] opts The index options.
|
103
103
|
#
|
104
104
|
# @return [ Hash ] The normalized options.
|
105
105
|
#
|
@@ -46,7 +46,7 @@ module Mongoid
|
|
46
46
|
# @example Is the callback executable?
|
47
47
|
# document.callback_executable?(:save)
|
48
48
|
#
|
49
|
-
# @param [ Symbol ]
|
49
|
+
# @param [ Symbol ] kind The type of callback.
|
50
50
|
#
|
51
51
|
# @return [ true, false ] If the callback can be executed.
|
52
52
|
#
|
@@ -118,7 +118,7 @@ module Mongoid
|
|
118
118
|
# end
|
119
119
|
#
|
120
120
|
# @param [ Symbol ] kind The type of callback to execute.
|
121
|
-
# @param [ Array ]
|
121
|
+
# @param [ Array ] args Any options.
|
122
122
|
#
|
123
123
|
# @return [ Document ] The document
|
124
124
|
#
|
data/lib/mongoid/loggable.rb
CHANGED
data/lib/mongoid/matchable.rb
CHANGED
@@ -82,7 +82,7 @@ module Mongoid
|
|
82
82
|
#
|
83
83
|
# @param [ Document ] document The document to check.
|
84
84
|
# @param [ Symbol, String ] key The field name.
|
85
|
-
# @param [ Object, Hash ] The value or selector.
|
85
|
+
# @param [ Object, Hash ] value The value or selector.
|
86
86
|
#
|
87
87
|
# @return [ Matcher ] The matcher.
|
88
88
|
#
|
@@ -103,7 +103,7 @@ module Mongoid
|
|
103
103
|
#
|
104
104
|
# @param [ Document ] document The document to check.
|
105
105
|
# @param [ Symbol, String ] key The field name.
|
106
|
-
# @param [ Object, Hash ] The value or selector.
|
106
|
+
# @param [ Object, Hash ] value The value or selector.
|
107
107
|
#
|
108
108
|
# @return [ Matcher ] The matcher.
|
109
109
|
#
|
data/lib/mongoid/persistable.rb
CHANGED
@@ -69,8 +69,6 @@ module Mongoid
|
|
69
69
|
# @example Raise the validation error.
|
70
70
|
# Person.fail_due_to_validation!(person)
|
71
71
|
#
|
72
|
-
# @param [ Document ] document The document to fail.
|
73
|
-
#
|
74
72
|
# @raise [ Errors::Validations ] The validation error.
|
75
73
|
#
|
76
74
|
# @since 4.0.0
|
@@ -83,7 +81,6 @@ module Mongoid
|
|
83
81
|
# @example Raise the callback error.
|
84
82
|
# Person.fail_due_to_callback!(person, :create!)
|
85
83
|
#
|
86
|
-
# @param [ Document ] document The document to fail.
|
87
84
|
# @param [ Symbol ] method The method being called.
|
88
85
|
#
|
89
86
|
# @raise [ Errors::Callback ] The callback error.
|
@@ -165,8 +165,6 @@ module Mongoid
|
|
165
165
|
#
|
166
166
|
# @param [ Hash, Array ] attributes The attributes to create with, or an
|
167
167
|
# Array of multiple attributes for multiple documents.
|
168
|
-
# @param [ Hash ] options A mass-assignment protection options. Supports
|
169
|
-
# :as and :without_protection
|
170
168
|
#
|
171
169
|
# @return [ Document, Array<Document> ] The newly created document(s).
|
172
170
|
#
|
data/lib/mongoid/query_cache.rb
CHANGED
@@ -221,7 +221,7 @@ module Mongoid
|
|
221
221
|
super
|
222
222
|
else
|
223
223
|
unless cursor = cached_cursor
|
224
|
-
server =
|
224
|
+
server = read_or_server_selector.select_server(cluster)
|
225
225
|
cursor = CachedCursor.new(view, send_initial_query(server), server)
|
226
226
|
QueryCache.cache_table[cache_key] = cursor
|
227
227
|
end
|
@@ -234,6 +234,10 @@ module Mongoid
|
|
234
234
|
|
235
235
|
private
|
236
236
|
|
237
|
+
def read_or_server_selector
|
238
|
+
respond_to?(:server_selector, true) ? server_selector : read
|
239
|
+
end
|
240
|
+
|
237
241
|
def cached_cursor
|
238
242
|
if limit
|
239
243
|
key = [ collection.namespace, selector, nil, skip, sort, projection, collation ]
|
@@ -17,7 +17,6 @@ module Mongoid
|
|
17
17
|
# @param [ String, Symbol ] name The name of the relation.
|
18
18
|
# @param [ Hash, BSON::ObjectId ] object The id or attributes to use.
|
19
19
|
# @param [ Metadata ] metadata The relation's metadata.
|
20
|
-
# @param [ true, false ] building If we are in a build operation.
|
21
20
|
#
|
22
21
|
# @return [ Proxy ] The relation.
|
23
22
|
#
|
@@ -32,7 +31,7 @@ module Mongoid
|
|
32
31
|
# @example Create the relation.
|
33
32
|
# person.create_relation(document, metadata)
|
34
33
|
#
|
35
|
-
# @param [ Document, Array<Document ] object The relation target.
|
34
|
+
# @param [ Document, Array<Document> ] object The relation target.
|
36
35
|
# @param [ Metadata ] metadata The relation metadata.
|
37
36
|
#
|
38
37
|
# @return [ Proxy ] The relation.
|
@@ -17,8 +17,6 @@ module Mongoid
|
|
17
17
|
# name.person.bind(:continue => true)
|
18
18
|
# name.person = Person.new
|
19
19
|
#
|
20
|
-
# @param [ Hash ] options The binding options.
|
21
|
-
#
|
22
20
|
# @option options [ true, false ] :continue Continue binding the inverse.
|
23
21
|
# @option options [ true, false ] :binding Are we in build mode?
|
24
22
|
#
|
@@ -42,8 +40,6 @@ module Mongoid
|
|
42
40
|
# name.person.unbind(:continue => true)
|
43
41
|
# name.person = nil
|
44
42
|
#
|
45
|
-
# @param [ Hash ] options The options to pass through.
|
46
|
-
#
|
47
43
|
# @option options [ true, false ] :continue Do we continue unbinding?
|
48
44
|
#
|
49
45
|
# @since 2.0.0.rc.1
|
@@ -14,10 +14,6 @@ module Mongoid
|
|
14
14
|
# person.addresses.bind_one(address)
|
15
15
|
#
|
16
16
|
# @param [ Document ] doc The single document to bind.
|
17
|
-
# @param [ Hash ] options The binding options.
|
18
|
-
#
|
19
|
-
# @option options [ true, false ] :continue Continue binding the inverse.
|
20
|
-
# @option options [ true, false ] :binding Are we in build mode?
|
21
17
|
#
|
22
18
|
# @since 2.0.0.rc.1
|
23
19
|
def bind_one(doc)
|
@@ -32,10 +28,7 @@ module Mongoid
|
|
32
28
|
# @example Unbind the document.
|
33
29
|
# person.addresses.unbind_one(document)
|
34
30
|
#
|
35
|
-
# @param [
|
36
|
-
#
|
37
|
-
# @option options [ true, false ] :continue Continue binding the inverse.
|
38
|
-
# @option options [ true, false ] :binding Are we in build mode?
|
31
|
+
# @param [ Document ] doc The single document to unbind.
|
39
32
|
#
|
40
33
|
# @since 2.0.0.rc.1
|
41
34
|
def unbind_one(doc)
|
@@ -17,11 +17,6 @@ module Mongoid
|
|
17
17
|
# person.name.bind(:continue => true)
|
18
18
|
# person.name = Name.new
|
19
19
|
#
|
20
|
-
# @param [ Hash ] options The options to pass through.
|
21
|
-
#
|
22
|
-
# @option options [ true, false ] :continue Do we continue binding?
|
23
|
-
# @option options [ true, false ] :binding Are we in build mode?
|
24
|
-
#
|
25
20
|
# @since 2.0.0.rc.1
|
26
21
|
def bind_one
|
27
22
|
target.parentize(base)
|
@@ -37,11 +32,6 @@ module Mongoid
|
|
37
32
|
# person.name.unbind(:continue => true)
|
38
33
|
# person.name = nil
|
39
34
|
#
|
40
|
-
# @param [ Hash ] options The options to pass through.
|
41
|
-
#
|
42
|
-
# @option options [ true, false ] :continue Do we continue unbinding?
|
43
|
-
# @option options [ true, false ] :binding Are we in build mode?
|
44
|
-
#
|
45
35
|
# @since 2.0.0.rc.1
|
46
36
|
def unbind_one
|
47
37
|
binding do
|
@@ -13,8 +13,6 @@ module Mongoid
|
|
13
13
|
# @example Bind one document.
|
14
14
|
# person.posts.bind_one(post)
|
15
15
|
#
|
16
|
-
# @param [ Document ] doc The single document to bind.
|
17
|
-
#
|
18
16
|
# @since 2.0.0.rc.1
|
19
17
|
def bind_one(doc)
|
20
18
|
binding do
|
@@ -27,8 +25,6 @@ module Mongoid
|
|
27
25
|
# @example Unbind the document.
|
28
26
|
# person.posts.unbind_one(document)
|
29
27
|
#
|
30
|
-
# @param [ Document ] document The document to unbind.
|
31
|
-
#
|
32
28
|
# @since 2.0.0.rc.1
|
33
29
|
def unbind_one(doc)
|
34
30
|
binding do
|
@@ -12,7 +12,7 @@ module Mongoid
|
|
12
12
|
# @example Build the document.
|
13
13
|
# Builder.new(meta, attrs).build
|
14
14
|
#
|
15
|
-
# @param [ String ]
|
15
|
+
# @param [ String ] _type Not used in this context.
|
16
16
|
#
|
17
17
|
# @return [ Document ] A single document.
|
18
18
|
def build(_type = nil)
|
@@ -60,7 +60,7 @@ module Mongoid
|
|
60
60
|
# @example Is the document destroyable?
|
61
61
|
# destroyable?({ :_destroy => "1" })
|
62
62
|
#
|
63
|
-
# @
|
63
|
+
# @param [ Hash ] attributes The attributes to pull the flag from.
|
64
64
|
#
|
65
65
|
# @return [ true, false ] If the relation can potentially be deleted.
|
66
66
|
def destroyable?(attributes)
|
@@ -13,7 +13,7 @@ module Mongoid
|
|
13
13
|
# Conversions.flag(metadata, 15)
|
14
14
|
#
|
15
15
|
# @param [ Object ] object The object to flag.
|
16
|
-
# @param [ Metadata ] The relation metadata.
|
16
|
+
# @param [ Metadata ] metadata The relation metadata.
|
17
17
|
#
|
18
18
|
# @return [ Object ] The provided object.
|
19
19
|
#
|
@@ -11,7 +11,7 @@ module Mongoid
|
|
11
11
|
# @example Reset the given counter cache
|
12
12
|
# post.reset_counters(:comments)
|
13
13
|
#
|
14
|
-
# @param [ Symbol, Array ] One or more counter caches to reset
|
14
|
+
# @param [ Symbol, Array ] counters One or more counter caches to reset
|
15
15
|
#
|
16
16
|
# @since 4.0.0
|
17
17
|
def reset_counters(*counters)
|
@@ -27,8 +27,8 @@ module Mongoid
|
|
27
27
|
# @example Reset the given counter cache
|
28
28
|
# Post.reset_counters('50e0edd97c71c17ea9000001', :comments)
|
29
29
|
#
|
30
|
-
# @param [ String ] The id of the object that will be reset.
|
31
|
-
# @param [ Symbol, Array ] One or more counter caches to reset
|
30
|
+
# @param [ String ] id The id of the object that will be reset.
|
31
|
+
# @param [ Symbol, Array ] counters One or more counter caches to reset
|
32
32
|
#
|
33
33
|
# @since 3.1.0
|
34
34
|
def reset_counters(id, *counters)
|
@@ -49,8 +49,8 @@ module Mongoid
|
|
49
49
|
# Post.update_counters('50e0edd97c71c17ea9000001',
|
50
50
|
# :comments_count => 5, :likes_count => -2)
|
51
51
|
#
|
52
|
-
# @param [ String ] The id of the object to update.
|
53
|
-
# @param [ Hash ]
|
52
|
+
# @param [ String ] id The id of the object to update.
|
53
|
+
# @param [ Hash ] counters
|
54
54
|
#
|
55
55
|
# @since 3.1.0
|
56
56
|
def update_counters(id, counters)
|
@@ -64,8 +64,8 @@ module Mongoid
|
|
64
64
|
# @example Increment comments counter
|
65
65
|
# Post.increment_counter(:comments_count, '50e0edd97c71c17ea9000001')
|
66
66
|
#
|
67
|
-
# @param [ Symbol ] Counter cache name
|
68
|
-
# @param [ String ] The id of the object that will have its counter incremented.
|
67
|
+
# @param [ Symbol ] counter_name Counter cache name
|
68
|
+
# @param [ String ] id The id of the object that will have its counter incremented.
|
69
69
|
#
|
70
70
|
# @since 3.1.0
|
71
71
|
def increment_counter(counter_name, id)
|
@@ -79,8 +79,8 @@ module Mongoid
|
|
79
79
|
# @example Decrement comments counter
|
80
80
|
# Post.decrement_counter(:comments_count, '50e0edd97c71c17ea9000001')
|
81
81
|
#
|
82
|
-
# @param [ Symbol ] Counter cache name
|
83
|
-
# @param [ String ] The id of the object that will have its counter decremented.
|
82
|
+
# @param [ Symbol ] counter_name Counter cache name
|
83
|
+
# @param [ String ] id The id of the object that will have its counter decremented.
|
84
84
|
#
|
85
85
|
# @since 3.1.0
|
86
86
|
def decrement_counter(counter_name, id)
|
@@ -96,7 +96,7 @@ module Mongoid
|
|
96
96
|
# @example Add the touchable.
|
97
97
|
# Person.add_counter_cache_callbacks(meta)
|
98
98
|
#
|
99
|
-
# @param [ Metadata ]
|
99
|
+
# @param [ Metadata ] meta The metadata for the relation.
|
100
100
|
#
|
101
101
|
# @since 3.1.0
|
102
102
|
def add_counter_cache_callbacks(meta)
|
@@ -12,8 +12,8 @@ module Mongoid
|
|
12
12
|
# @example Create the new belongs to eager load preloader.
|
13
13
|
# BelongsTo.new(relations_metadata, parent_docs)
|
14
14
|
#
|
15
|
-
# @param [ Array<Metadata> ] Relations to eager load
|
16
|
-
# @param [ Array<Document> ] Documents to preload the relations
|
15
|
+
# @param [ Array<Metadata> ] associations Relations to eager load
|
16
|
+
# @param [ Array<Document> ] docs Documents to preload the relations
|
17
17
|
#
|
18
18
|
# @return [ Base ] The eager load preloader
|
19
19
|
#
|
@@ -84,7 +84,7 @@ module Mongoid
|
|
84
84
|
# @example Set docs into parent with pk = "foo"
|
85
85
|
# loader.set_on_parent("foo", docs)
|
86
86
|
#
|
87
|
-
# @param [ ObjectId ] parent`s id
|
87
|
+
# @param [ ObjectId ] id parent`s id
|
88
88
|
# @param [ Document, Array ] element to push into the parent
|
89
89
|
#
|
90
90
|
# @since 4.0.0
|
@@ -140,7 +140,7 @@ module Mongoid
|
|
140
140
|
# @example Set docs into parent using the current relation name.
|
141
141
|
# loader.set_relation(doc, docs)
|
142
142
|
#
|
143
|
-
# @param [ Document ]
|
143
|
+
# @param [ Document ] doc
|
144
144
|
# @param [ Document, Array ] element to set into the parent
|
145
145
|
#
|
146
146
|
# @since 4.0.0
|
@@ -13,15 +13,15 @@ module Mongoid
|
|
13
13
|
# made to the database.
|
14
14
|
#
|
15
15
|
# @example Execute the batch push.
|
16
|
-
# batchable.
|
16
|
+
# batchable.batch_push([ doc_one, doc_two ])
|
17
17
|
#
|
18
18
|
# @param [ Array<Document> ] docs The docs to add.
|
19
19
|
#
|
20
20
|
# @return [ Array<Hash> ] The inserts.
|
21
21
|
#
|
22
|
-
# @since
|
23
|
-
def
|
24
|
-
|
22
|
+
# @since 5.4.0
|
23
|
+
def batch_push(docs)
|
24
|
+
execute_batch_push(docs)
|
25
25
|
end
|
26
26
|
|
27
27
|
# Clear all of the docs out of the relation in a single swipe.
|
@@ -89,7 +89,7 @@ module Mongoid
|
|
89
89
|
base.delayed_atomic_sets.clear unless _assigning?
|
90
90
|
docs = normalize_docs(docs).compact
|
91
91
|
target.clear and _unscoped.clear
|
92
|
-
inserts =
|
92
|
+
inserts = execute_batch_set(docs)
|
93
93
|
add_atomic_sets(inserts)
|
94
94
|
end
|
95
95
|
end
|
@@ -122,26 +122,50 @@ module Mongoid
|
|
122
122
|
# @api private
|
123
123
|
#
|
124
124
|
# @example Perform a batch operation.
|
125
|
-
# batchable.
|
125
|
+
# batchable.execute_batch_set(docs)
|
126
126
|
#
|
127
127
|
# @param [ Array<Document> ] docs The docs to persist.
|
128
128
|
# @param [ String ] operation The atomic operation.
|
129
129
|
#
|
130
130
|
# @return [ Array<Hash> ] The inserts.
|
131
131
|
#
|
132
|
-
# @since
|
133
|
-
def
|
132
|
+
# @since 5.4.0
|
133
|
+
def execute_batch_set(docs)
|
134
134
|
self.inserts_valid = true
|
135
135
|
inserts = pre_process_batch_insert(docs)
|
136
136
|
if insertable?
|
137
137
|
collection.find(selector).update_one(
|
138
|
-
positionally(selector,
|
138
|
+
positionally(selector, '$set' => { path => inserts })
|
139
139
|
)
|
140
140
|
post_process_batch_insert(docs)
|
141
141
|
end
|
142
142
|
inserts
|
143
143
|
end
|
144
144
|
|
145
|
+
# Perform a batch persist of the provided documents with $push and $each.
|
146
|
+
#
|
147
|
+
# @api private
|
148
|
+
#
|
149
|
+
# @example Perform a batch push.
|
150
|
+
# batchable.execute_batch_push(docs)
|
151
|
+
#
|
152
|
+
# @param [ Array<Document> ] docs The docs to persist.
|
153
|
+
# @param [ String ] operation The atomic operation.
|
154
|
+
#
|
155
|
+
# @return [ Array<Hash> ] The inserts.
|
156
|
+
#
|
157
|
+
# @since 5.4.0
|
158
|
+
def execute_batch_push(docs)
|
159
|
+
self.inserts_valid = true
|
160
|
+
pushes = pre_process_batch_insert(docs)
|
161
|
+
if insertable?
|
162
|
+
collection.find(selector).update_one(
|
163
|
+
positionally(selector, '$push' => { path => { '$each' => pushes } }))
|
164
|
+
post_process_batch_insert(docs)
|
165
|
+
end
|
166
|
+
pushes
|
167
|
+
end
|
168
|
+
|
145
169
|
# Are we in a state to be able to batch insert?
|
146
170
|
#
|
147
171
|
# @api private
|
@@ -31,7 +31,7 @@ module Mongoid
|
|
31
31
|
# @example Substitute the new document.
|
32
32
|
# person.name.substitute(new_name)
|
33
33
|
#
|
34
|
-
# @param [ Document ]
|
34
|
+
# @param [ Document ] replacement A document to replace the target.
|
35
35
|
#
|
36
36
|
# @return [ Document, nil ] The relation or nil.
|
37
37
|
#
|
@@ -55,8 +55,6 @@ module Mongoid
|
|
55
55
|
# @example Get the binding.
|
56
56
|
# binding([ address ])
|
57
57
|
#
|
58
|
-
# @param [ Proxy ] new_target The new documents to bind with.
|
59
|
-
#
|
60
58
|
# @return [ Binding ] A binding object.
|
61
59
|
#
|
62
60
|
# @since 2.0.0.rc.1
|