mongoid 7.2.3 → 7.3.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Rakefile +16 -0
- data/lib/config/locales/en.yml +2 -2
- data/lib/mongoid/association/accessors.rb +1 -1
- data/lib/mongoid/association/constrainable.rb +1 -1
- data/lib/mongoid/association/depending.rb +4 -4
- data/lib/mongoid/association/embedded/batchable.rb +1 -1
- data/lib/mongoid/association/embedded/embedded_in.rb +1 -1
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +10 -3
- data/lib/mongoid/association/nested/many.rb +1 -1
- data/lib/mongoid/association/nested/one.rb +4 -2
- data/lib/mongoid/association/proxy.rb +6 -1
- data/lib/mongoid/association/referenced/auto_save.rb +2 -2
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +493 -495
- data/lib/mongoid/association/referenced/has_many/proxy.rb +2 -2
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +2 -2
- data/lib/mongoid/attributes.rb +24 -13
- data/lib/mongoid/attributes/projector.rb +120 -0
- data/lib/mongoid/cacheable.rb +2 -2
- data/lib/mongoid/clients.rb +1 -1
- data/lib/mongoid/clients/factory.rb +22 -8
- data/lib/mongoid/config.rb +19 -2
- data/lib/mongoid/contextual/aggregable/mongo.rb +10 -8
- data/lib/mongoid/copyable.rb +1 -1
- data/lib/mongoid/criteria.rb +4 -5
- data/lib/mongoid/criteria/findable.rb +1 -1
- data/lib/mongoid/criteria/queryable/expandable.rb +0 -24
- data/lib/mongoid/criteria/queryable/extensions.rb +0 -4
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +1 -1
- data/lib/mongoid/criteria/queryable/mergeable.rb +46 -20
- data/lib/mongoid/criteria/queryable/selectable.rb +8 -8
- data/lib/mongoid/document.rb +1 -15
- data/lib/mongoid/errors/delete_restriction.rb +8 -9
- data/lib/mongoid/evolvable.rb +1 -1
- data/lib/mongoid/extensions/boolean.rb +1 -2
- data/lib/mongoid/extensions/false_class.rb +1 -1
- data/lib/mongoid/extensions/hash.rb +2 -2
- data/lib/mongoid/extensions/true_class.rb +1 -1
- data/lib/mongoid/fields.rb +43 -5
- data/lib/mongoid/inspectable.rb +1 -1
- data/lib/mongoid/matcher.rb +7 -0
- data/lib/mongoid/matcher/bits.rb +41 -0
- data/lib/mongoid/matcher/bits_all_clear.rb +20 -0
- data/lib/mongoid/matcher/bits_all_set.rb +20 -0
- data/lib/mongoid/matcher/bits_any_clear.rb +20 -0
- data/lib/mongoid/matcher/bits_any_set.rb +20 -0
- data/lib/mongoid/matcher/expression.rb +4 -0
- data/lib/mongoid/matcher/field_operator.rb +6 -0
- data/lib/mongoid/matcher/mod.rb +17 -0
- data/lib/mongoid/matcher/type.rb +99 -0
- data/lib/mongoid/persistable/deletable.rb +1 -2
- data/lib/mongoid/persistable/destroyable.rb +8 -2
- data/lib/mongoid/persistable/updatable.rb +27 -2
- data/lib/mongoid/query_cache.rb +35 -29
- data/lib/mongoid/selectable.rb +5 -7
- data/lib/mongoid/shardable.rb +21 -5
- data/lib/mongoid/touchable.rb +23 -4
- data/lib/mongoid/version.rb +1 -1
- data/spec/integration/associations/embeds_many_spec.rb +44 -0
- data/spec/integration/associations/has_one_spec.rb +48 -0
- data/spec/integration/criteria/date_field_spec.rb +1 -1
- data/spec/integration/document_spec.rb +9 -0
- data/spec/integration/matcher_operator_data/bits_all_clear.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_all_set.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_any_clear.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_any_set.yml +159 -0
- data/spec/integration/matcher_operator_data/comment.yml +22 -0
- data/spec/integration/matcher_operator_data/in.yml +16 -0
- data/spec/integration/matcher_operator_data/mod.yml +55 -0
- data/spec/integration/matcher_operator_data/type.yml +70 -0
- data/spec/integration/matcher_operator_data/type_array.yml +16 -0
- data/spec/integration/matcher_operator_data/type_binary.yml +18 -0
- data/spec/integration/matcher_operator_data/type_boolean.yml +39 -0
- data/spec/integration/matcher_operator_data/type_code.yml +26 -0
- data/spec/integration/matcher_operator_data/type_code_with_scope.yml +26 -0
- data/spec/integration/matcher_operator_data/type_date.yml +39 -0
- data/spec/integration/matcher_operator_data/type_db_pointer.yml +19 -0
- data/spec/integration/matcher_operator_data/type_decimal.yml +40 -0
- data/spec/integration/matcher_operator_data/type_double.yml +15 -0
- data/spec/integration/matcher_operator_data/type_int32.yml +33 -0
- data/spec/integration/matcher_operator_data/type_int64.yml +33 -0
- data/spec/integration/matcher_operator_data/type_max_key.yml +17 -0
- data/spec/integration/matcher_operator_data/type_min_key.yml +17 -0
- data/spec/integration/matcher_operator_data/type_null.yml +23 -0
- data/spec/integration/matcher_operator_data/type_object.yml +23 -0
- data/spec/integration/matcher_operator_data/type_object_id.yml +25 -0
- data/spec/integration/matcher_operator_data/type_regex.yml +44 -0
- data/spec/integration/matcher_operator_data/type_string.yml +15 -0
- data/spec/integration/matcher_operator_data/type_symbol.yml +32 -0
- data/spec/integration/matcher_operator_data/type_timestamp.yml +25 -0
- data/spec/integration/matcher_operator_data/type_undefined.yml +17 -0
- data/spec/lite_spec_helper.rb +2 -0
- data/spec/mongoid/association/depending_spec.rb +391 -352
- data/spec/mongoid/association/nested/one_spec.rb +18 -14
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +25 -8
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +1 -1
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +1 -1
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +1 -1
- data/spec/mongoid/association/referenced/has_one_models.rb +8 -0
- data/spec/mongoid/atomic/paths_spec.rb +64 -12
- data/spec/mongoid/attributes/projector_data/embedded.yml +105 -0
- data/spec/mongoid/attributes/projector_data/fields.yml +93 -0
- data/spec/mongoid/attributes/projector_spec.rb +41 -0
- data/spec/mongoid/attributes_spec.rb +98 -6
- data/spec/mongoid/clients/factory_spec.rb +48 -0
- data/spec/mongoid/config_spec.rb +32 -0
- data/spec/mongoid/contextual/mongo_spec.rb +2 -2
- data/spec/mongoid/criteria/modifiable_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/expandable_spec.rb +0 -73
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +105 -7
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +229 -24
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +39 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +1 -565
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +590 -0
- data/spec/mongoid/criteria_projection_spec.rb +411 -0
- data/spec/mongoid/criteria_spec.rb +0 -275
- data/spec/mongoid/document_spec.rb +13 -13
- data/spec/mongoid/errors/delete_restriction_spec.rb +1 -1
- data/spec/mongoid/extensions/false_class_spec.rb +1 -1
- data/spec/mongoid/extensions/string_spec.rb +5 -5
- data/spec/mongoid/extensions/true_class_spec.rb +1 -1
- data/spec/mongoid/fields/localized_spec.rb +4 -4
- data/spec/mongoid/fields_spec.rb +4 -4
- data/spec/mongoid/inspectable_spec.rb +12 -4
- data/spec/mongoid/persistable/deletable_spec.rb +175 -1
- data/spec/mongoid/persistable/destroyable_spec.rb +191 -3
- data/spec/mongoid/persistable/savable_spec.rb +3 -5
- data/spec/mongoid/persistable/upsertable_spec.rb +1 -1
- data/spec/mongoid/query_cache_middleware_spec.rb +8 -0
- data/spec/mongoid/reloadable_spec.rb +18 -1
- data/spec/mongoid/shardable_spec.rb +44 -0
- data/spec/mongoid/touchable_spec.rb +104 -16
- data/spec/mongoid/touchable_spec_models.rb +52 -0
- data/spec/mongoid/validatable_spec.rb +1 -1
- data/spec/spec_helper.rb +6 -2
- data/spec/support/client_registry.rb +9 -0
- data/spec/support/models/bolt.rb +8 -0
- data/spec/support/models/hole.rb +13 -0
- data/spec/support/models/mop.rb +0 -1
- data/spec/support/models/nut.rb +8 -0
- data/spec/support/models/person.rb +6 -0
- data/spec/support/models/sealer.rb +8 -0
- data/spec/support/models/shirt.rb +12 -0
- data/spec/support/models/spacer.rb +8 -0
- data/spec/support/models/threadlocker.rb +8 -0
- data/spec/support/models/washer.rb +8 -0
- metadata +97 -3
- metadata.gz.sig +5 -3
- data/spec/support/cluster_config.rb +0 -158
data/lib/mongoid/version.rb
CHANGED
|
@@ -21,4 +21,48 @@ describe 'embeds_many associations' do
|
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
|
+
|
|
25
|
+
context 'clearing association when parent is not saved' do
|
|
26
|
+
let!(:parent) { Canvas.create!(shapes: [Shape.new]) }
|
|
27
|
+
|
|
28
|
+
let(:unsaved_parent) { Canvas.new(id: parent.id, shapes: [Shape.new]) }
|
|
29
|
+
|
|
30
|
+
context "using #clear" do
|
|
31
|
+
it 'deletes the target from the database' do
|
|
32
|
+
unsaved_parent.shapes.clear
|
|
33
|
+
|
|
34
|
+
unsaved_parent.shapes.should be_empty
|
|
35
|
+
|
|
36
|
+
unsaved_parent.new_record?.should be true
|
|
37
|
+
parent.reload
|
|
38
|
+
parent.shapes.should be_empty
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
shared_examples 'does not delete the target from the database' do
|
|
43
|
+
it 'does not delete the target from the database' do
|
|
44
|
+
unsaved_parent.shapes.should be_empty
|
|
45
|
+
|
|
46
|
+
unsaved_parent.new_record?.should be true
|
|
47
|
+
parent.reload
|
|
48
|
+
parent.shapes.length.should == 1
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
context "using #delete_all" do
|
|
53
|
+
before do
|
|
54
|
+
unsaved_parent.shapes.delete_all
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
include_examples 'does not delete the target from the database'
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
context "using #destroy_all" do
|
|
61
|
+
before do
|
|
62
|
+
unsaved_parent.shapes.destroy_all
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
include_examples 'does not delete the target from the database'
|
|
66
|
+
end
|
|
67
|
+
end
|
|
24
68
|
end
|
|
@@ -67,6 +67,54 @@ describe 'has_one associations' do
|
|
|
67
67
|
end
|
|
68
68
|
end
|
|
69
69
|
|
|
70
|
+
context 'when calling methods on target' do
|
|
71
|
+
let(:parent) do
|
|
72
|
+
HomCollege.create!.tap do |college|
|
|
73
|
+
HomAccreditation.create!(college: college)
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
shared_examples 'delegates to the field' do |reloaded: false|
|
|
78
|
+
context 'non-conflicting field name' do
|
|
79
|
+
it 'delegates to the field' do
|
|
80
|
+
parent.accreditation.price.should == 42
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
context 'using send' do
|
|
84
|
+
it 'delegates to the field' do
|
|
85
|
+
parent.accreditation.send(:price).should == 42
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
context 'field name that conflicts with Kernel' do
|
|
91
|
+
it 'delegates to the field' do
|
|
92
|
+
parent.accreditation.format.should == 'fmt'
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
context 'using send' do
|
|
96
|
+
it 'delegates to the field' do
|
|
97
|
+
if reloaded
|
|
98
|
+
pending 'MONGOID-4018'
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
parent.accreditation.send(:format).should == 'fmt'
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
include_examples 'delegates to the field'
|
|
108
|
+
|
|
109
|
+
context 'after reloading parent' do
|
|
110
|
+
before do
|
|
111
|
+
parent.reload
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
include_examples 'delegates to the field', reloaded: true
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
70
118
|
context 'when child does not have parent association' do
|
|
71
119
|
context 'Child.new' do
|
|
72
120
|
it 'creates a child instance' do
|
|
@@ -12,7 +12,7 @@ describe 'Queries on Date fields' do
|
|
|
12
12
|
|
|
13
13
|
shared_examples 'converts to beginning of day in UTC' do
|
|
14
14
|
it 'converts to beginning of day in UTC' do
|
|
15
|
-
selector['founded'].should == arg.
|
|
15
|
+
selector['founded'].should == Time.utc(arg.year, arg.month, arg.day)
|
|
16
16
|
end
|
|
17
17
|
end
|
|
18
18
|
|
|
@@ -20,6 +20,15 @@ describe Mongoid::Document do
|
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
+
context 'when id is unaliased' do
|
|
24
|
+
it 'persists separate id and _id values' do
|
|
25
|
+
shirt = Shirt.create!(id: 'hello', _id: 'foo')
|
|
26
|
+
shirt = Shirt.find(shirt._id)
|
|
27
|
+
shirt.id.should == 'hello'
|
|
28
|
+
shirt._id.should == 'foo'
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
23
32
|
describe '#reload' do
|
|
24
33
|
context 'when changing shard key value' do
|
|
25
34
|
require_topology :sharded
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
- name: existing field - matches with int
|
|
2
|
+
document:
|
|
3
|
+
a: 20
|
|
4
|
+
binaryValueofA: "00010100"
|
|
5
|
+
query:
|
|
6
|
+
a:
|
|
7
|
+
$bitsAllClear: 35
|
|
8
|
+
matches: true
|
|
9
|
+
min_server_version: 3.2
|
|
10
|
+
|
|
11
|
+
- name: existing field - does not match with int
|
|
12
|
+
document:
|
|
13
|
+
a: 20
|
|
14
|
+
binaryValueofA: "00010100"
|
|
15
|
+
query:
|
|
16
|
+
a:
|
|
17
|
+
$bitsAllClear: 24
|
|
18
|
+
matches: false
|
|
19
|
+
min_server_version: 3.2
|
|
20
|
+
|
|
21
|
+
- name: existing field - matches with binData
|
|
22
|
+
document:
|
|
23
|
+
a: 20
|
|
24
|
+
binaryValueofA: "00010100"
|
|
25
|
+
query:
|
|
26
|
+
a:
|
|
27
|
+
$bitsAllClear: !ruby/object:BSON::Binary
|
|
28
|
+
data: !binary |-
|
|
29
|
+
IW==
|
|
30
|
+
type: :generic
|
|
31
|
+
matches: true
|
|
32
|
+
min_server_version: 3.2
|
|
33
|
+
|
|
34
|
+
- name: existing field - does not match with binData
|
|
35
|
+
document:
|
|
36
|
+
a: 21
|
|
37
|
+
binaryValueofA: "00010101"
|
|
38
|
+
query:
|
|
39
|
+
a:
|
|
40
|
+
$bitsAllClear: !ruby/object:BSON::Binary
|
|
41
|
+
data: !binary |-
|
|
42
|
+
IW==
|
|
43
|
+
type: :generic
|
|
44
|
+
matches: false
|
|
45
|
+
min_server_version: 3.2
|
|
46
|
+
|
|
47
|
+
- name: existing binData field matches
|
|
48
|
+
document:
|
|
49
|
+
a: !ruby/object:BSON::Binary
|
|
50
|
+
data: !binary |-
|
|
51
|
+
IW==
|
|
52
|
+
type: :generic
|
|
53
|
+
query:
|
|
54
|
+
a:
|
|
55
|
+
$bitsAllClear: 20
|
|
56
|
+
matches: true
|
|
57
|
+
min_server_version: 3.2
|
|
58
|
+
|
|
59
|
+
- name: existing binData field does not match
|
|
60
|
+
document:
|
|
61
|
+
a: !ruby/object:BSON::Binary
|
|
62
|
+
data: !binary |-
|
|
63
|
+
IW==
|
|
64
|
+
type: :generic
|
|
65
|
+
query:
|
|
66
|
+
a:
|
|
67
|
+
$bitsAllClear: 15
|
|
68
|
+
matches: false
|
|
69
|
+
min_server_version: 3.2
|
|
70
|
+
|
|
71
|
+
- name: existing field - matches with array
|
|
72
|
+
document:
|
|
73
|
+
a: 20
|
|
74
|
+
binaryValueofA: "00010100"
|
|
75
|
+
query:
|
|
76
|
+
a:
|
|
77
|
+
$bitsAllClear: [0, 3]
|
|
78
|
+
matches: true
|
|
79
|
+
min_server_version: 3.2
|
|
80
|
+
|
|
81
|
+
- name: existing field - does not match with array
|
|
82
|
+
document:
|
|
83
|
+
a: 20
|
|
84
|
+
binaryValueofA: "00010100"
|
|
85
|
+
query:
|
|
86
|
+
a:
|
|
87
|
+
$bitsAllClear: [0, 2]
|
|
88
|
+
matches: false
|
|
89
|
+
min_server_version: 3.2
|
|
90
|
+
|
|
91
|
+
- name: float condition representable as an integer
|
|
92
|
+
document:
|
|
93
|
+
a: 20
|
|
94
|
+
binaryValueofA: "00010100"
|
|
95
|
+
query:
|
|
96
|
+
a:
|
|
97
|
+
$bitsAllClear: 35.0
|
|
98
|
+
matches: true
|
|
99
|
+
min_server_version: 3.2
|
|
100
|
+
|
|
101
|
+
- name: float condition not representable as an integer
|
|
102
|
+
document:
|
|
103
|
+
a: 20
|
|
104
|
+
binaryValueofA: "00010100"
|
|
105
|
+
query:
|
|
106
|
+
a:
|
|
107
|
+
$bitsAllClear: 35.1
|
|
108
|
+
error: true
|
|
109
|
+
min_server_version: 3.2
|
|
110
|
+
|
|
111
|
+
- name: string condition
|
|
112
|
+
document:
|
|
113
|
+
a: 54
|
|
114
|
+
binaryValueofA: "00110110"
|
|
115
|
+
query:
|
|
116
|
+
a:
|
|
117
|
+
$bitsAllClear: hello
|
|
118
|
+
error: true
|
|
119
|
+
min_server_version: 3.2
|
|
120
|
+
|
|
121
|
+
- name: empty array condition
|
|
122
|
+
document:
|
|
123
|
+
a: 20
|
|
124
|
+
binaryValueofA: "00010100"
|
|
125
|
+
query:
|
|
126
|
+
a:
|
|
127
|
+
$bitsAllClear: []
|
|
128
|
+
matches: true
|
|
129
|
+
min_server_version: 3.2
|
|
130
|
+
|
|
131
|
+
- name: integer 0 condition
|
|
132
|
+
document:
|
|
133
|
+
a: 20
|
|
134
|
+
binaryValueofA: "00010100"
|
|
135
|
+
query:
|
|
136
|
+
a:
|
|
137
|
+
$bitsAllClear: 0
|
|
138
|
+
matches: true
|
|
139
|
+
min_server_version: 3.2
|
|
140
|
+
|
|
141
|
+
- name: negative integer condition
|
|
142
|
+
document:
|
|
143
|
+
a: 54
|
|
144
|
+
binaryValueofA: "00110110"
|
|
145
|
+
query:
|
|
146
|
+
a:
|
|
147
|
+
$bitsAllClear: -1
|
|
148
|
+
error: true
|
|
149
|
+
min_server_version: 3.2
|
|
150
|
+
|
|
151
|
+
- name: negative float condition
|
|
152
|
+
document:
|
|
153
|
+
a: 54
|
|
154
|
+
binaryValueofA: "00110110"
|
|
155
|
+
query:
|
|
156
|
+
a:
|
|
157
|
+
$bitsAllClear: -1.0
|
|
158
|
+
error: true
|
|
159
|
+
min_server_version: 3.2
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
- name: existing field - matches with int
|
|
2
|
+
document:
|
|
3
|
+
a: 54
|
|
4
|
+
binaryValueofA: "00110110"
|
|
5
|
+
query:
|
|
6
|
+
a:
|
|
7
|
+
$bitsAllSet: 50
|
|
8
|
+
matches: true
|
|
9
|
+
min_server_version: 3.2
|
|
10
|
+
|
|
11
|
+
- name: existing field - does not match with int
|
|
12
|
+
document:
|
|
13
|
+
a: 52
|
|
14
|
+
binaryValueofA: "00110100"
|
|
15
|
+
query:
|
|
16
|
+
a:
|
|
17
|
+
$bitsAllSet: 50
|
|
18
|
+
matches: false
|
|
19
|
+
min_server_version: 3.2
|
|
20
|
+
|
|
21
|
+
- name: existing field - matches with binData
|
|
22
|
+
document:
|
|
23
|
+
a: 54
|
|
24
|
+
binaryValueofA: "00110110"
|
|
25
|
+
query:
|
|
26
|
+
a:
|
|
27
|
+
$bitsAllSet: !ruby/object:BSON::Binary
|
|
28
|
+
data: !binary |-
|
|
29
|
+
Ng==
|
|
30
|
+
type: :generic
|
|
31
|
+
matches: true
|
|
32
|
+
min_server_version: 3.2
|
|
33
|
+
|
|
34
|
+
- name: existing field - does not match with binData
|
|
35
|
+
document:
|
|
36
|
+
a: 21
|
|
37
|
+
binaryValueofA: "00010101"
|
|
38
|
+
query:
|
|
39
|
+
a:
|
|
40
|
+
$bitsAllSet: !ruby/object:BSON::Binary
|
|
41
|
+
data: !binary |-
|
|
42
|
+
MC==
|
|
43
|
+
type: :generic
|
|
44
|
+
matches: false
|
|
45
|
+
min_server_version: 3.2
|
|
46
|
+
|
|
47
|
+
- name: existing binData field matches
|
|
48
|
+
document:
|
|
49
|
+
a: !ruby/object:BSON::Binary
|
|
50
|
+
data: !binary |-
|
|
51
|
+
Ng==
|
|
52
|
+
type: :generic
|
|
53
|
+
query:
|
|
54
|
+
a:
|
|
55
|
+
$bitsAllSet: 48
|
|
56
|
+
matches: true
|
|
57
|
+
min_server_version: 3.2
|
|
58
|
+
|
|
59
|
+
- name: existing binData field does not match
|
|
60
|
+
document:
|
|
61
|
+
a: !ruby/object:BSON::Binary
|
|
62
|
+
data: !binary |-
|
|
63
|
+
MC==
|
|
64
|
+
type: :generic
|
|
65
|
+
query:
|
|
66
|
+
a:
|
|
67
|
+
$bitsAllSet: 54
|
|
68
|
+
matches: false
|
|
69
|
+
min_server_version: 3.2
|
|
70
|
+
|
|
71
|
+
- name: existing field - matches with array
|
|
72
|
+
document:
|
|
73
|
+
a: 20
|
|
74
|
+
binaryValueofA: "00010100"
|
|
75
|
+
query:
|
|
76
|
+
a:
|
|
77
|
+
$bitsAllSet: [2, 4]
|
|
78
|
+
matches: true
|
|
79
|
+
min_server_version: 3.2
|
|
80
|
+
|
|
81
|
+
- name: existing field - does not match with array
|
|
82
|
+
document:
|
|
83
|
+
a: 20
|
|
84
|
+
binaryValueofA: "00010100"
|
|
85
|
+
query:
|
|
86
|
+
a:
|
|
87
|
+
$bitsAllSet: [0, 3]
|
|
88
|
+
matches: false
|
|
89
|
+
min_server_version: 3.2
|
|
90
|
+
|
|
91
|
+
- name: float condition representable as an integer
|
|
92
|
+
document:
|
|
93
|
+
a: 54
|
|
94
|
+
binaryValueofA: "00110110"
|
|
95
|
+
query:
|
|
96
|
+
a:
|
|
97
|
+
$bitsAllSet: 50.0
|
|
98
|
+
matches: true
|
|
99
|
+
min_server_version: 3.2
|
|
100
|
+
|
|
101
|
+
- name: float condition not representable as an integer
|
|
102
|
+
document:
|
|
103
|
+
a: 54
|
|
104
|
+
binaryValueofA: "00110110"
|
|
105
|
+
query:
|
|
106
|
+
a:
|
|
107
|
+
$bitsAllSet: 50.1
|
|
108
|
+
error: true
|
|
109
|
+
min_server_version: 3.2
|
|
110
|
+
|
|
111
|
+
- name: string condition
|
|
112
|
+
document:
|
|
113
|
+
a: 54
|
|
114
|
+
binaryValueofA: "00110110"
|
|
115
|
+
query:
|
|
116
|
+
a:
|
|
117
|
+
$bitsAllSet: hello
|
|
118
|
+
error: true
|
|
119
|
+
min_server_version: 3.2
|
|
120
|
+
|
|
121
|
+
- name: empty array condition
|
|
122
|
+
document:
|
|
123
|
+
a: 54
|
|
124
|
+
binaryValueofA: "00110110"
|
|
125
|
+
query:
|
|
126
|
+
a:
|
|
127
|
+
$bitsAllSet: []
|
|
128
|
+
matches: true
|
|
129
|
+
min_server_version: 3.2
|
|
130
|
+
|
|
131
|
+
- name: integer 0 condition
|
|
132
|
+
document:
|
|
133
|
+
a: 54
|
|
134
|
+
binaryValueofA: "00110110"
|
|
135
|
+
query:
|
|
136
|
+
a:
|
|
137
|
+
$bitsAllSet: 0
|
|
138
|
+
matches: true
|
|
139
|
+
min_server_version: 3.2
|
|
140
|
+
|
|
141
|
+
- name: negative integer condition
|
|
142
|
+
document:
|
|
143
|
+
a: 54
|
|
144
|
+
binaryValueofA: "00110110"
|
|
145
|
+
query:
|
|
146
|
+
a:
|
|
147
|
+
$bitsAllSet: -1
|
|
148
|
+
error: true
|
|
149
|
+
min_server_version: 3.2
|
|
150
|
+
|
|
151
|
+
- name: negative float condition
|
|
152
|
+
document:
|
|
153
|
+
a: 54
|
|
154
|
+
binaryValueofA: "00110110"
|
|
155
|
+
query:
|
|
156
|
+
a:
|
|
157
|
+
$bitsAllSet: -1.0
|
|
158
|
+
error: true
|
|
159
|
+
min_server_version: 3.2
|