mongoid 7.2.0 → 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/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/projector.rb +120 -0
- data/lib/mongoid/attributes.rb +32 -14
- data/lib/mongoid/cacheable.rb +2 -2
- data/lib/mongoid/clients/factory.rb +22 -8
- data/lib/mongoid/clients.rb +1 -1
- 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/findable.rb +1 -1
- data/lib/mongoid/criteria/queryable/expandable.rb +0 -24
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions.rb +0 -4
- data/lib/mongoid/criteria/queryable/mergeable.rb +46 -20
- data/lib/mongoid/criteria/queryable/selectable.rb +8 -8
- data/lib/mongoid/criteria/queryable/selector.rb +0 -4
- data/lib/mongoid/criteria.rb +4 -5
- data/lib/mongoid/document.rb +4 -17
- 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/interceptable.rb +3 -1
- 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/elem_match.rb +2 -1
- data/lib/mongoid/matcher/expression.rb +9 -14
- data/lib/mongoid/matcher/field_expression.rb +4 -5
- data/lib/mongoid/matcher/field_operator.rb +13 -11
- data/lib/mongoid/matcher/mod.rb +17 -0
- data/lib/mongoid/matcher/type.rb +99 -0
- data/lib/mongoid/matcher.rb +26 -43
- 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/reloadable.rb +5 -0
- 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/lib/rails/generators/mongoid/config/config_generator.rb +8 -1
- data/spec/integration/app_spec.rb +171 -84
- data/spec/integration/associations/embeds_many_spec.rb +44 -0
- data/spec/integration/associations/has_one_spec.rb +48 -0
- data/spec/integration/callbacks_models.rb +49 -0
- data/spec/integration/callbacks_spec.rb +216 -0
- data/spec/integration/criteria/date_field_spec.rb +1 -1
- data/spec/integration/document_spec.rb +30 -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/elem_match.yml +46 -0
- data/spec/integration/matcher_operator_data/gt_types.yml +63 -0
- data/spec/integration/matcher_operator_data/gte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/implicit_traversal.yml +96 -0
- data/spec/integration/matcher_operator_data/in.yml +16 -0
- data/spec/integration/matcher_operator_data/lt_types.yml +15 -0
- data/spec/integration/matcher_operator_data/lte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/mod.yml +55 -0
- data/spec/integration/matcher_operator_data/ne_types.yml +15 -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 +5 -4
- data/spec/mongoid/association/depending_spec.rb +391 -352
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +50 -0
- 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 +105 -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 +333 -0
- data/spec/mongoid/clients/factory_spec.rb +48 -0
- data/spec/mongoid/config_spec.rb +32 -0
- data/spec/mongoid/contextual/atomic_spec.rb +17 -4
- 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 +265 -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_fields_spec.rb +26 -0
- 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/matcher/extract_attribute_data/numeric_keys.yml +104 -0
- data/spec/mongoid/matcher/extract_attribute_data/traversal.yml +68 -88
- data/spec/mongoid/matcher/extract_attribute_spec.rb +3 -13
- 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/settable_spec.rb +30 -0
- 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/shared/bin/get-mongodb-download-url +17 -0
- data/spec/shared/lib/mrss/cluster_config.rb +221 -0
- data/spec/shared/lib/mrss/constraints.rb +51 -0
- data/spec/shared/lib/mrss/docker_runner.rb +265 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +16 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +115 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +14 -1
- data/spec/shared/lib/mrss/utils.rb +15 -0
- data/spec/shared/share/Dockerfile.erb +231 -0
- data/spec/shared/shlib/distro.sh +73 -0
- data/spec/shared/shlib/server.sh +290 -0
- data/spec/shared/shlib/set_env.sh +128 -0
- 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/customer.rb +11 -0
- data/spec/support/models/customer_address.rb +12 -0
- data/spec/support/models/dictionary.rb +6 -0
- data/spec/support/models/hole.rb +13 -0
- data/spec/support/models/mop.rb +9 -0
- 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
- data/spec/support/spec_config.rb +8 -0
- data.tar.gz.sig +0 -0
- metadata +146 -14
- metadata.gz.sig +5 -2
- data/spec/support/cluster_config.rb +0 -158
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
- name: existing field - matches with int
|
|
2
|
+
document:
|
|
3
|
+
a: 54
|
|
4
|
+
binaryValueofA: "00110110"
|
|
5
|
+
query:
|
|
6
|
+
a:
|
|
7
|
+
$bitsAnyClear: 35
|
|
8
|
+
matches: true
|
|
9
|
+
min_server_version: 3.2
|
|
10
|
+
|
|
11
|
+
- name: existing field - does not match with int
|
|
12
|
+
document:
|
|
13
|
+
a: 7
|
|
14
|
+
binaryValueofA: "00000011"
|
|
15
|
+
query:
|
|
16
|
+
a:
|
|
17
|
+
$bitsAnyClear: 35
|
|
18
|
+
matches: true
|
|
19
|
+
min_server_version: 3.2
|
|
20
|
+
|
|
21
|
+
- name: existing field - matches with binData
|
|
22
|
+
document:
|
|
23
|
+
a: 16
|
|
24
|
+
binaryValueofA: "00001000"
|
|
25
|
+
query:
|
|
26
|
+
a:
|
|
27
|
+
$bitsAnyClear: !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: 55
|
|
37
|
+
binaryValueofA: "00110111"
|
|
38
|
+
query:
|
|
39
|
+
a:
|
|
40
|
+
$bitsAnyClear: !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
|
+
FA==
|
|
52
|
+
type: :generic
|
|
53
|
+
query:
|
|
54
|
+
a:
|
|
55
|
+
$bitsAnyClear: 35
|
|
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
|
+
$bitsAnyClear: 32
|
|
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
|
+
$bitsAnyClear: [0, 2]
|
|
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
|
+
$bitsAnyClear: [2, 4]
|
|
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
|
+
$bitsAnyClear: 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: 54
|
|
104
|
+
binaryValueofA: "00110110"
|
|
105
|
+
query:
|
|
106
|
+
a:
|
|
107
|
+
$bitsAnyClear: 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
|
+
$bitsAnyClear: '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
|
+
$bitsAnyClear: []
|
|
128
|
+
matches: false
|
|
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
|
+
$bitsAnyClear: 0
|
|
138
|
+
matches: false
|
|
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
|
+
$bitsAnyClear: -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
|
+
$bitsAnyClear: -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
|
+
$bitsAnySet: 35
|
|
8
|
+
matches: true
|
|
9
|
+
min_server_version: 3.2
|
|
10
|
+
|
|
11
|
+
- name: existing field - does not match with int
|
|
12
|
+
document:
|
|
13
|
+
a: 16
|
|
14
|
+
binaryValueofA: "00000100"
|
|
15
|
+
query:
|
|
16
|
+
a:
|
|
17
|
+
$bitsAllSet: 35
|
|
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
|
+
$bitsAnySet: !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: 16
|
|
37
|
+
binaryValueofA: "00001000"
|
|
38
|
+
query:
|
|
39
|
+
a:
|
|
40
|
+
$bitsAnySet: !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
|
+
$bitsAnySet: 37
|
|
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
|
+
$bitsAnySet: 20
|
|
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
|
+
$bitsAnySet: [0, 2]
|
|
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
|
+
$bitsAnySet: [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
|
+
$bitsAnySet: 35
|
|
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
|
+
$bitsAnySet: 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
|
+
$bitsAnySet: 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
|
+
$bitsAnySet: []
|
|
128
|
+
matches: false
|
|
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
|
+
$bitsAnySet: 0
|
|
138
|
+
matches: false
|
|
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
|
+
$bitsAnySet: -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
|
+
$bitsAnySet: -1.0
|
|
158
|
+
error: true
|
|
159
|
+
min_server_version: 3.2
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
- name: matches
|
|
2
|
+
document:
|
|
3
|
+
name: Angel Share
|
|
4
|
+
query:
|
|
5
|
+
name: Angel Share
|
|
6
|
+
$comment: "foo"
|
|
7
|
+
matches: true
|
|
8
|
+
|
|
9
|
+
- name: null query is accepted
|
|
10
|
+
document:
|
|
11
|
+
pi: 3.14
|
|
12
|
+
query:
|
|
13
|
+
$comment: "hello"
|
|
14
|
+
matches: true
|
|
15
|
+
|
|
16
|
+
- name: does not match
|
|
17
|
+
document:
|
|
18
|
+
name: Angel Share
|
|
19
|
+
query:
|
|
20
|
+
name: Angel Foo
|
|
21
|
+
$comment: "foo"
|
|
22
|
+
matches: false
|
|
@@ -361,3 +361,49 @@
|
|
|
361
361
|
# https://jira.mongodb.org/browse/MONGOID-4908
|
|
362
362
|
matches: false
|
|
363
363
|
error: [matcher, driver]
|
|
364
|
+
|
|
365
|
+
- name: $elemMatch given as symbol
|
|
366
|
+
document:
|
|
367
|
+
tags:
|
|
368
|
+
- intelligent
|
|
369
|
+
query:
|
|
370
|
+
tags:
|
|
371
|
+
:$elemMatch:
|
|
372
|
+
$eq: intelligent
|
|
373
|
+
matches: true
|
|
374
|
+
|
|
375
|
+
- name: $elemMatch given as symbol - document does not contain the matched field
|
|
376
|
+
document:
|
|
377
|
+
query:
|
|
378
|
+
tags:
|
|
379
|
+
:$elemMatch:
|
|
380
|
+
$eq: intelligent
|
|
381
|
+
matches: false
|
|
382
|
+
|
|
383
|
+
- name: $elemMatch argument operator given as symbol - matches
|
|
384
|
+
document:
|
|
385
|
+
tags:
|
|
386
|
+
- intelligent
|
|
387
|
+
query:
|
|
388
|
+
tags:
|
|
389
|
+
$elemMatch:
|
|
390
|
+
:$eq: intelligent
|
|
391
|
+
matches: true
|
|
392
|
+
|
|
393
|
+
- name: $elemMatch argument operator given as symbol - does not match
|
|
394
|
+
document:
|
|
395
|
+
tags:
|
|
396
|
+
- intelligent
|
|
397
|
+
query:
|
|
398
|
+
tags:
|
|
399
|
+
$elemMatch:
|
|
400
|
+
:$eq: intelli
|
|
401
|
+
matches: false
|
|
402
|
+
|
|
403
|
+
- name: $elemMatch argument operator given as symbol - document does not contain the matched field
|
|
404
|
+
document:
|
|
405
|
+
query:
|
|
406
|
+
tags:
|
|
407
|
+
$elemMatch:
|
|
408
|
+
:$eq: intelli
|
|
409
|
+
matches: false
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
- name: Date field - matches
|
|
2
|
+
document:
|
|
3
|
+
date_field: 2020-12-22
|
|
4
|
+
query:
|
|
5
|
+
date_field:
|
|
6
|
+
$gt: 2020-12-21
|
|
7
|
+
matches: true
|
|
8
|
+
|
|
9
|
+
- name: Date field - does not match
|
|
10
|
+
document:
|
|
11
|
+
date_field: 2020-12-21
|
|
12
|
+
query:
|
|
13
|
+
date_field:
|
|
14
|
+
$gt: 2020-12-21
|
|
15
|
+
matches: false
|
|
16
|
+
|
|
17
|
+
- name: Date value in generic field - matches
|
|
18
|
+
document:
|
|
19
|
+
field: 2020-12-22
|
|
20
|
+
query:
|
|
21
|
+
field:
|
|
22
|
+
$gt: 2020-12-21
|
|
23
|
+
matches: true
|
|
24
|
+
|
|
25
|
+
- name: Date field - does not match
|
|
26
|
+
document:
|
|
27
|
+
field: 2020-12-21
|
|
28
|
+
query:
|
|
29
|
+
field:
|
|
30
|
+
$gt: 2020-12-21
|
|
31
|
+
matches: false
|
|
32
|
+
|
|
33
|
+
- name: Time value in generic field queried by date - matches
|
|
34
|
+
document:
|
|
35
|
+
field: 2020-12-22 00:00:00
|
|
36
|
+
query:
|
|
37
|
+
field:
|
|
38
|
+
$gt: 2020-12-21
|
|
39
|
+
matches: true
|
|
40
|
+
|
|
41
|
+
- name: Time value in generic field queried by date - does not match
|
|
42
|
+
document:
|
|
43
|
+
field: 2020-12-21 00:00:00
|
|
44
|
+
query:
|
|
45
|
+
field:
|
|
46
|
+
$gt: 2020-12-21
|
|
47
|
+
matches: false
|
|
48
|
+
|
|
49
|
+
- name: Time value in generic field - matches
|
|
50
|
+
document:
|
|
51
|
+
field: 2020-12-22 00:00:00
|
|
52
|
+
query:
|
|
53
|
+
field:
|
|
54
|
+
$gt: 2020-12-21 00:00:00
|
|
55
|
+
matches: true
|
|
56
|
+
|
|
57
|
+
- name: Time value in generic field - does not match
|
|
58
|
+
document:
|
|
59
|
+
field: 2020-12-21 00:00:00
|
|
60
|
+
query:
|
|
61
|
+
field:
|
|
62
|
+
$gt: 2020-12-21 00:00:00
|
|
63
|
+
matches: false
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
- name: Date field - matches
|
|
2
|
+
document:
|
|
3
|
+
date_field: 2020-12-22
|
|
4
|
+
query:
|
|
5
|
+
date_field:
|
|
6
|
+
$gte: 2020-12-21
|
|
7
|
+
matches: true
|
|
8
|
+
|
|
9
|
+
- name: Date field - does not match
|
|
10
|
+
document:
|
|
11
|
+
date_field: 2020-12-20
|
|
12
|
+
query:
|
|
13
|
+
date_field:
|
|
14
|
+
$gte: 2020-12-21
|
|
15
|
+
matches: false
|
|
@@ -14,3 +14,99 @@
|
|
|
14
14
|
query:
|
|
15
15
|
foo.bar: 2
|
|
16
16
|
matches: true
|
|
17
|
+
|
|
18
|
+
- name: numeric key - matches
|
|
19
|
+
document: &numeric-key
|
|
20
|
+
foo:
|
|
21
|
+
'42':
|
|
22
|
+
bar: 1
|
|
23
|
+
query:
|
|
24
|
+
foo.42.bar: 1
|
|
25
|
+
matches: true
|
|
26
|
+
|
|
27
|
+
- name: numeric key - does not match
|
|
28
|
+
document: *numeric-key
|
|
29
|
+
query:
|
|
30
|
+
foo.142.bar: 1
|
|
31
|
+
matches: false
|
|
32
|
+
|
|
33
|
+
- name: array under numeric key - matches
|
|
34
|
+
document: &numeric-key-array
|
|
35
|
+
foo:
|
|
36
|
+
'42':
|
|
37
|
+
-
|
|
38
|
+
bar: 1
|
|
39
|
+
query:
|
|
40
|
+
foo.42.bar: 1
|
|
41
|
+
matches: true
|
|
42
|
+
|
|
43
|
+
- name: array under numeric key - does not match
|
|
44
|
+
document: *numeric-key-array
|
|
45
|
+
query:
|
|
46
|
+
foo.142.bar: 1
|
|
47
|
+
matches: false
|
|
48
|
+
|
|
49
|
+
- name: numeric key under array - matches
|
|
50
|
+
document: &array-numeric-key
|
|
51
|
+
foo:
|
|
52
|
+
-
|
|
53
|
+
'42':
|
|
54
|
+
bar: 1
|
|
55
|
+
query:
|
|
56
|
+
foo.42.bar: 1
|
|
57
|
+
matches: true
|
|
58
|
+
|
|
59
|
+
- name: numeric key under array - does not match
|
|
60
|
+
document: *array-numeric-key
|
|
61
|
+
query:
|
|
62
|
+
foo.142.bar: 1
|
|
63
|
+
matches: false
|
|
64
|
+
|
|
65
|
+
- name: numeric key eligible as both array index and hash key - matches array index
|
|
66
|
+
document: &numeric-key-mixed
|
|
67
|
+
foo:
|
|
68
|
+
-
|
|
69
|
+
'1':
|
|
70
|
+
bar: 1
|
|
71
|
+
-
|
|
72
|
+
'1':
|
|
73
|
+
bar: 2
|
|
74
|
+
query:
|
|
75
|
+
foo.1:
|
|
76
|
+
'1':
|
|
77
|
+
bar: 2
|
|
78
|
+
matches: true
|
|
79
|
+
|
|
80
|
+
- name: numeric key eligible as both array index and hash key - does not match array index
|
|
81
|
+
document: *numeric-key-mixed
|
|
82
|
+
query:
|
|
83
|
+
foo.1:
|
|
84
|
+
# The second array item has bar: 2, bar: 1 is not matched
|
|
85
|
+
'1':
|
|
86
|
+
bar: 1
|
|
87
|
+
matches: false
|
|
88
|
+
|
|
89
|
+
- name: numeric key eligible as both array index and hash key - matches hash key
|
|
90
|
+
document: *numeric-key-mixed
|
|
91
|
+
query:
|
|
92
|
+
foo.1:
|
|
93
|
+
# Both bar: 1 and bar: 2 are ok, 1 in query matches the key under each
|
|
94
|
+
# array element
|
|
95
|
+
bar: 2
|
|
96
|
+
matches: true
|
|
97
|
+
|
|
98
|
+
- name: numeric key eligible as both array index and hash key - matches hash key again
|
|
99
|
+
document: *numeric-key-mixed
|
|
100
|
+
query:
|
|
101
|
+
foo.1:
|
|
102
|
+
# Both bar: 1 and bar: 2 are ok, 1 in query matches the key under each
|
|
103
|
+
# array element
|
|
104
|
+
bar: 1
|
|
105
|
+
matches: true
|
|
106
|
+
|
|
107
|
+
- name: numeric key eligible as both array index and hash key - does not match hash key
|
|
108
|
+
document: *numeric-key-mixed
|
|
109
|
+
query:
|
|
110
|
+
foo.0:
|
|
111
|
+
bar: 2
|
|
112
|
+
matches: false
|
|
@@ -192,3 +192,19 @@
|
|
|
192
192
|
end: 20
|
|
193
193
|
excl: false
|
|
194
194
|
error: true
|
|
195
|
+
|
|
196
|
+
- name: scalar field - symbol operator - matches
|
|
197
|
+
document:
|
|
198
|
+
count: 10
|
|
199
|
+
query:
|
|
200
|
+
count:
|
|
201
|
+
:$in: [10, 11]
|
|
202
|
+
matches: true
|
|
203
|
+
|
|
204
|
+
- name: scalar field - symbol operator - does not match
|
|
205
|
+
document:
|
|
206
|
+
count: 8
|
|
207
|
+
query:
|
|
208
|
+
count:
|
|
209
|
+
:$in: [10, 11]
|
|
210
|
+
matches: false
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
- name: Date field - matches
|
|
2
|
+
document:
|
|
3
|
+
date_field: 2020-12-19
|
|
4
|
+
query:
|
|
5
|
+
date_field:
|
|
6
|
+
$lt: 2020-12-21
|
|
7
|
+
matches: true
|
|
8
|
+
|
|
9
|
+
- name: Date field - does not match
|
|
10
|
+
document:
|
|
11
|
+
date_field: 2020-12-21
|
|
12
|
+
query:
|
|
13
|
+
date_field:
|
|
14
|
+
$lt: 2020-12-21
|
|
15
|
+
matches: false
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
- name: Date field - matches
|
|
2
|
+
document:
|
|
3
|
+
date_field: 2020-12-19
|
|
4
|
+
query:
|
|
5
|
+
date_field:
|
|
6
|
+
$lte: 2020-12-21
|
|
7
|
+
matches: true
|
|
8
|
+
|
|
9
|
+
- name: Date field - does not match
|
|
10
|
+
document:
|
|
11
|
+
date_field: 2020-12-22
|
|
12
|
+
query:
|
|
13
|
+
date_field:
|
|
14
|
+
$lte: 2020-12-21
|
|
15
|
+
matches: false
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
- name: existing field - matches
|
|
2
|
+
document:
|
|
3
|
+
pi: 8
|
|
4
|
+
query:
|
|
5
|
+
pi:
|
|
6
|
+
$mod: [5, 3]
|
|
7
|
+
matches: true
|
|
8
|
+
|
|
9
|
+
- name: existing field - does not match
|
|
10
|
+
document:
|
|
11
|
+
pi: 9
|
|
12
|
+
query:
|
|
13
|
+
pi:
|
|
14
|
+
$mod: [5, 3]
|
|
15
|
+
matches: false
|
|
16
|
+
|
|
17
|
+
- name: invalid condition
|
|
18
|
+
document:
|
|
19
|
+
pi: 9
|
|
20
|
+
query:
|
|
21
|
+
pi:
|
|
22
|
+
$mod: 5
|
|
23
|
+
error: true
|
|
24
|
+
|
|
25
|
+
- name: invalid field
|
|
26
|
+
document:
|
|
27
|
+
pi: [1, 2]
|
|
28
|
+
query:
|
|
29
|
+
pi:
|
|
30
|
+
$mod: 5
|
|
31
|
+
error: true
|
|
32
|
+
|
|
33
|
+
- name: array too short
|
|
34
|
+
document:
|
|
35
|
+
pi: 3
|
|
36
|
+
query:
|
|
37
|
+
pi:
|
|
38
|
+
$mod: [5]
|
|
39
|
+
error: true
|
|
40
|
+
|
|
41
|
+
- name: empty array
|
|
42
|
+
document:
|
|
43
|
+
pi: 3
|
|
44
|
+
query:
|
|
45
|
+
pi:
|
|
46
|
+
$mod: []
|
|
47
|
+
error: true
|
|
48
|
+
|
|
49
|
+
- name: array too long
|
|
50
|
+
document:
|
|
51
|
+
pi: 3
|
|
52
|
+
query:
|
|
53
|
+
pi:
|
|
54
|
+
$mod: [1, 2, 3]
|
|
55
|
+
error: true
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
- name: Date field - matches
|
|
2
|
+
document:
|
|
3
|
+
date_field: 2020-12-22
|
|
4
|
+
query:
|
|
5
|
+
date_field:
|
|
6
|
+
$ne: 2020-12-21
|
|
7
|
+
matches: true
|
|
8
|
+
|
|
9
|
+
- name: Date field - does not match
|
|
10
|
+
document:
|
|
11
|
+
date_field: 2020-12-21
|
|
12
|
+
query:
|
|
13
|
+
date_field:
|
|
14
|
+
$ne: 2020-12-21
|
|
15
|
+
matches: false
|