mongo 2.3.1 → 2.4.0.rc0
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 +2 -3
- data/lib/mongo/bulk_write.rb +8 -7
- data/lib/mongo/bulk_write/combineable.rb +4 -0
- data/lib/mongo/bulk_write/transformable.rb +17 -5
- data/lib/mongo/bulk_write/validatable.rb +1 -0
- data/lib/mongo/client.rb +3 -0
- data/lib/mongo/cluster.rb +8 -0
- data/lib/mongo/cluster/app_metadata.rb +135 -0
- data/lib/mongo/collection.rb +42 -10
- data/lib/mongo/collection/view.rb +15 -1
- data/lib/mongo/collection/view/aggregation.rb +5 -0
- data/lib/mongo/collection/view/builder/aggregation.rb +13 -3
- data/lib/mongo/collection/view/builder/find_command.rb +7 -21
- data/lib/mongo/collection/view/builder/map_reduce.rb +22 -5
- data/lib/mongo/collection/view/iterable.rb +1 -0
- data/lib/mongo/collection/view/map_reduce.rb +5 -0
- data/lib/mongo/collection/view/readable.rb +35 -14
- data/lib/mongo/collection/view/writable.rb +54 -23
- data/lib/mongo/cursor/builder/get_more_command.rb +2 -3
- data/lib/mongo/database.rb +10 -2
- data/lib/mongo/error.rb +2 -0
- data/lib/mongo/error/invalid_application_name.rb +38 -0
- data/lib/mongo/error/invalid_server_preference.rb +24 -3
- data/lib/mongo/error/unsupported_collation.rb +51 -0
- data/lib/mongo/index/view.rb +28 -15
- data/lib/mongo/operation.rb +6 -0
- data/lib/mongo/operation/commands.rb +3 -0
- data/lib/mongo/operation/commands/aggregate.rb +10 -10
- data/lib/mongo/operation/commands/create.rb +45 -0
- data/lib/mongo/operation/commands/drop.rb +45 -0
- data/lib/mongo/operation/commands/drop_database.rb +45 -0
- data/lib/mongo/operation/commands/map_reduce.rb +12 -1
- data/lib/mongo/operation/commands/parallel_scan.rb +1 -0
- data/lib/mongo/operation/read_preference.rb +9 -9
- data/lib/mongo/operation/specifiable.rb +34 -0
- data/lib/mongo/operation/takes_write_concern.rb +35 -0
- data/lib/mongo/operation/write/bulk/bulkable.rb +1 -1
- data/lib/mongo/operation/write/command/create_index.rb +6 -0
- data/lib/mongo/operation/write/command/drop_index.rb +6 -0
- data/lib/mongo/operation/write/command/insert.rb +1 -1
- data/lib/mongo/operation/write/command/update.rb +1 -0
- data/lib/mongo/operation/write/command/writable.rb +2 -2
- data/lib/mongo/operation/write/create_index.rb +2 -2
- data/lib/mongo/operation/write/create_user.rb +1 -1
- data/lib/mongo/operation/write/delete.rb +5 -1
- data/lib/mongo/operation/write/gle.rb +1 -1
- data/lib/mongo/operation/write/insert.rb +2 -2
- data/lib/mongo/operation/write/remove_user.rb +1 -1
- data/lib/mongo/operation/write/update.rb +5 -1
- data/lib/mongo/operation/write/update_user.rb +1 -1
- data/lib/mongo/operation/write/write_command_enabled.rb +10 -2
- data/lib/mongo/protocol/insert.rb +1 -2
- data/lib/mongo/protocol/query.rb +3 -7
- data/lib/mongo/server.rb +8 -3
- data/lib/mongo/server/connection.rb +17 -11
- data/lib/mongo/server/description.rb +22 -0
- data/lib/mongo/server/description/features.rb +2 -0
- data/lib/mongo/server/monitor.rb +5 -0
- data/lib/mongo/server/monitor/connection.rb +11 -0
- data/lib/mongo/server_selector/nearest.rb +9 -6
- data/lib/mongo/server_selector/primary.rb +4 -0
- data/lib/mongo/server_selector/primary_preferred.rb +7 -1
- data/lib/mongo/server_selector/secondary.rb +5 -0
- data/lib/mongo/server_selector/secondary_preferred.rb +7 -2
- data/lib/mongo/server_selector/selectable.rb +57 -10
- data/lib/mongo/socket/ssl.rb +1 -0
- data/lib/mongo/uri.rb +4 -0
- data/lib/mongo/version.rb +1 -1
- data/lib/mongo/write_concern.rb +1 -0
- data/mongo.gemspec +1 -1
- data/spec/mongo/auth/cr_spec.rb +7 -1
- data/spec/mongo/auth/ldap_spec.rb +7 -1
- data/spec/mongo/auth/scram_spec.rb +7 -1
- data/spec/mongo/auth/x509_spec.rb +7 -1
- data/spec/mongo/bulk_write_spec.rb +598 -5
- data/spec/mongo/client_spec.rb +47 -1
- data/spec/mongo/cluster/app_metadata_spec.rb +104 -0
- data/spec/mongo/cluster/topology/replica_set_spec.rb +14 -8
- data/spec/mongo/cluster/topology/sharded_spec.rb +9 -3
- data/spec/mongo/cluster/topology/single_spec.rb +10 -4
- data/spec/mongo/cluster_spec.rb +29 -0
- data/spec/mongo/collection/view/aggregation_spec.rb +139 -0
- data/spec/mongo/collection/view/builder/find_command_spec.rb +6 -243
- data/spec/mongo/collection/view/map_reduce_spec.rb +104 -0
- data/spec/mongo/collection/view/readable_spec.rb +83 -0
- data/spec/mongo/collection/view/writable_spec.rb +447 -1
- data/spec/mongo/collection/view_spec.rb +57 -0
- data/spec/mongo/collection_spec.rb +926 -101
- data/spec/mongo/crud_spec.rb +4 -5
- data/spec/mongo/database_spec.rb +99 -1
- data/spec/mongo/index/view_spec.rb +360 -31
- data/spec/mongo/max_staleness_spec.rb +108 -0
- data/spec/mongo/operation/read_preference_spec.rb +8 -8
- data/spec/mongo/operation/write/command/delete_spec.rb +1 -1
- data/spec/mongo/operation/write/command/insert_spec.rb +1 -1
- data/spec/mongo/operation/write/command/update_spec.rb +1 -1
- data/spec/mongo/server/connection_pool_spec.rb +3 -1
- data/spec/mongo/server/connection_spec.rb +17 -7
- data/spec/mongo/server/description/features_spec.rb +50 -0
- data/spec/mongo/server/description_spec.rb +9 -3
- data/spec/mongo/server_selection_spec.rb +5 -3
- data/spec/mongo/server_selector/nearest_spec.rb +73 -0
- data/spec/mongo/server_selector/primary_preferred_spec.rb +73 -0
- data/spec/mongo/server_selector/primary_spec.rb +36 -0
- data/spec/mongo/server_selector/secondary_preferred_spec.rb +73 -0
- data/spec/mongo/server_selector/secondary_spec.rb +73 -0
- data/spec/mongo/server_selector_spec.rb +53 -0
- data/spec/mongo/server_spec.rb +3 -1
- data/spec/mongo/uri_spec.rb +54 -0
- data/spec/mongo/write_concern_spec.rb +18 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/support/authorization.rb +8 -1
- data/spec/support/crud.rb +15 -0
- data/spec/support/crud/read.rb +27 -19
- data/spec/support/crud/write.rb +28 -3
- data/spec/support/crud_tests/read/aggregate.yml +15 -3
- data/spec/support/crud_tests/read/count.yml +14 -3
- data/spec/support/crud_tests/read/distinct.yml +13 -1
- data/spec/support/crud_tests/read/find.yml +12 -2
- data/spec/support/crud_tests/write/deleteMany.yml +22 -1
- data/spec/support/crud_tests/write/deleteOne.yml +20 -1
- data/spec/support/crud_tests/write/findOneAndDelete.yml +27 -2
- data/spec/support/crud_tests/write/findOneAndReplace.yml +43 -14
- data/spec/support/crud_tests/write/findOneAndUpdate.yml +50 -8
- data/spec/support/crud_tests/write/replaceOne.yml +34 -10
- data/spec/support/crud_tests/write/updateMany.yml +42 -11
- data/spec/support/crud_tests/write/updateOne.yml +32 -7
- data/spec/support/max_staleness/ReplicaSetNoPrimary/DefaultNoMaxStaleness.yml +26 -0
- data/spec/support/max_staleness/ReplicaSetNoPrimary/Incompatible.yml +25 -0
- data/spec/support/max_staleness/ReplicaSetNoPrimary/LastUpdateTime.yml +33 -0
- data/spec/support/max_staleness/ReplicaSetNoPrimary/Nearest.yml +33 -0
- data/spec/support/max_staleness/ReplicaSetNoPrimary/Nearest2.yml +33 -0
- data/spec/support/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred.yml +27 -0
- data/spec/support/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred_tags.yml +36 -0
- data/spec/support/max_staleness/ReplicaSetNoPrimary/Secondary.yml +51 -0
- data/spec/support/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred.yml +26 -0
- data/spec/support/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred_tags.yml +51 -0
- data/spec/support/max_staleness/ReplicaSetWithPrimary/DefaultNoMaxStaleness.yml +26 -0
- data/spec/support/max_staleness/ReplicaSetWithPrimary/Incompatible.yml +25 -0
- data/spec/support/max_staleness/ReplicaSetWithPrimary/LastUpdateTime.yml +35 -0
- data/spec/support/max_staleness/ReplicaSetWithPrimary/MaxStalenessTooSmall.yml +25 -0
- data/spec/support/max_staleness/ReplicaSetWithPrimary/MaxStalenessWithModePrimary.yml +23 -0
- data/spec/support/max_staleness/ReplicaSetWithPrimary/Nearest.yml +33 -0
- data/spec/support/max_staleness/ReplicaSetWithPrimary/Nearest2.yml +33 -0
- data/spec/support/max_staleness/ReplicaSetWithPrimary/Nearest_tags.yml +36 -0
- data/spec/support/max_staleness/ReplicaSetWithPrimary/PrimaryPreferred.yml +27 -0
- data/spec/support/max_staleness/ReplicaSetWithPrimary/PrimaryPreferred_incompatible.yml +27 -0
- data/spec/support/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred.yml +26 -0
- data/spec/support/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags.yml +59 -0
- data/spec/support/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags2.yml +43 -0
- data/spec/support/max_staleness/ReplicaSetWithPrimary/Secondary_tags.yml +59 -0
- data/spec/support/max_staleness/ReplicaSetWithPrimary/Secondary_tags2.yml +43 -0
- data/spec/support/max_staleness/ReplicaSetWithPrimary/ShortHeartbeartShortMaxStaleness.yml +29 -0
- data/spec/support/max_staleness/ReplicaSetWithPrimary/ShortHeartbeartShortMaxStaleness2.yml +29 -0
- data/spec/support/max_staleness/ReplicaSetWithPrimary/ZeroMaxStaleness.yml +27 -0
- data/spec/support/max_staleness/Sharded/Incompatible.yml +25 -0
- data/spec/support/max_staleness/Sharded/SmallMaxStaleness.yml +20 -0
- data/spec/support/max_staleness/Single/Incompatible.yml +18 -0
- data/spec/support/max_staleness/Single/SmallMaxStaleness.yml +20 -0
- data/spec/support/server_selection.rb +25 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest_multiple.yml +27 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary_multi_tags.yml +31 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary_multi_tags2.yml +31 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest_multiple.yml +34 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/SecondaryPreferred_tags.yml +28 -0
- data/spec/support/shared/server_selector.rb +4 -3
- metadata +91 -6
- metadata.gz.sig +0 -0
@@ -2,6 +2,8 @@ data:
|
|
2
2
|
- {_id: 1, x: 11}
|
3
3
|
- {_id: 2, x: 22}
|
4
4
|
- {_id: 3, x: 33}
|
5
|
+
- {_id: 4, x: 'ping'}
|
6
|
+
- {_id: 5, x: 'pINg'}
|
5
7
|
|
6
8
|
tests:
|
7
9
|
-
|
@@ -12,18 +14,35 @@ tests:
|
|
12
14
|
filter:
|
13
15
|
_id: {$gt: 1}
|
14
16
|
|
17
|
+
outcome:
|
18
|
+
result:
|
19
|
+
deletedCount: 4
|
20
|
+
collection:
|
21
|
+
data:
|
22
|
+
- {_id: 1, x: 11}
|
23
|
+
-
|
24
|
+
description: "DeleteMany when many documents match with collation"
|
25
|
+
operation:
|
26
|
+
name: "deleteMany"
|
27
|
+
arguments:
|
28
|
+
filter:
|
29
|
+
x: 'PING'
|
30
|
+
collation: { locale: 'en_US', strength: 2 }
|
31
|
+
|
15
32
|
outcome:
|
16
33
|
result:
|
17
34
|
deletedCount: 2
|
18
35
|
collection:
|
19
36
|
data:
|
20
37
|
- {_id: 1, x: 11}
|
38
|
+
- {_id: 2, x: 22}
|
39
|
+
- {_id: 3, x: 33}
|
21
40
|
-
|
22
41
|
description: "DeleteMany when no document matches"
|
23
42
|
operation:
|
24
43
|
name: "deleteMany"
|
25
44
|
arguments:
|
26
|
-
filter: {_id:
|
45
|
+
filter: {_id: 6}
|
27
46
|
|
28
47
|
outcome:
|
29
48
|
result:
|
@@ -33,4 +52,6 @@ tests:
|
|
33
52
|
- {_id: 1, x: 11}
|
34
53
|
- {_id: 2, x: 22}
|
35
54
|
- {_id: 3, x: 33}
|
55
|
+
- {_id: 4, x: 'ping'}
|
56
|
+
- {_id: 5, x: 'pINg'}
|
36
57
|
|
@@ -2,6 +2,7 @@ data:
|
|
2
2
|
- {_id: 1, x: 11}
|
3
3
|
- {_id: 2, x: 22}
|
4
4
|
- {_id: 3, x: 33}
|
5
|
+
- {_id: 4, x: 'ping'}
|
5
6
|
|
6
7
|
tests:
|
7
8
|
-
|
@@ -31,12 +32,29 @@ tests:
|
|
31
32
|
data:
|
32
33
|
- {_id: 1, x: 11}
|
33
34
|
- {_id: 3, x: 33}
|
35
|
+
- {_id: 4, x: 'ping'}
|
36
|
+
-
|
37
|
+
description: "DeleteOne when one document matches with collation"
|
38
|
+
operation:
|
39
|
+
name: "deleteOne"
|
40
|
+
arguments:
|
41
|
+
filter: {x: 'PING'}
|
42
|
+
collation: { locale: 'en_US', strength: 2 }
|
43
|
+
|
44
|
+
outcome:
|
45
|
+
result:
|
46
|
+
deletedCount: 1
|
47
|
+
collection:
|
48
|
+
data:
|
49
|
+
- {_id: 1, x: 11}
|
50
|
+
- {_id: 2, x: 22}
|
51
|
+
- {_id: 3, x: 33}
|
34
52
|
-
|
35
53
|
description: "DeleteOne when no documents match"
|
36
54
|
operation:
|
37
55
|
name: "deleteOne"
|
38
56
|
arguments:
|
39
|
-
filter: {_id:
|
57
|
+
filter: {_id: 5}
|
40
58
|
|
41
59
|
outcome:
|
42
60
|
result:
|
@@ -46,4 +64,5 @@ tests:
|
|
46
64
|
- {_id: 1, x: 11}
|
47
65
|
- {_id: 2, x: 22}
|
48
66
|
- {_id: 3, x: 33}
|
67
|
+
- {_id: 4, x: 'ping'}
|
49
68
|
|
@@ -2,6 +2,8 @@ data:
|
|
2
2
|
- {_id: 1, x: 11}
|
3
3
|
- {_id: 2, x: 22}
|
4
4
|
- {_id: 3, x: 33}
|
5
|
+
- {_id: 4, x: 'ping'}
|
6
|
+
- {_id: 5, x: 'pINg'}
|
5
7
|
|
6
8
|
tests:
|
7
9
|
-
|
@@ -20,6 +22,8 @@ tests:
|
|
20
22
|
data:
|
21
23
|
- {_id: 1, x: 11}
|
22
24
|
- {_id: 3, x: 33}
|
25
|
+
- {_id: 4, x: 'ping'}
|
26
|
+
- {_id: 5, x: 'pINg'}
|
23
27
|
-
|
24
28
|
description: "FindOneAndDelete when one document matches"
|
25
29
|
operation:
|
@@ -35,12 +39,32 @@ tests:
|
|
35
39
|
data:
|
36
40
|
- {_id: 1, x: 11}
|
37
41
|
- {_id: 3, x: 33}
|
42
|
+
- {_id: 4, x: 'ping'}
|
43
|
+
- {_id: 5, x: 'pINg'}
|
44
|
+
-
|
45
|
+
description: "FindOneAndDelete when one document matches with collation"
|
46
|
+
operation:
|
47
|
+
name: findOneAndDelete
|
48
|
+
arguments:
|
49
|
+
filter: {_id: 4, x: 'PING'}
|
50
|
+
projection: {x: 1, _id: 0}
|
51
|
+
sort: {x: 1}
|
52
|
+
collation: { locale: 'en_US', strength: 2 }
|
53
|
+
|
54
|
+
outcome:
|
55
|
+
result: {x: 'ping'}
|
56
|
+
collection:
|
57
|
+
data:
|
58
|
+
- {_id: 1, x: 11}
|
59
|
+
- {_id: 2, x: 22}
|
60
|
+
- {_id: 3, x: 33}
|
61
|
+
- {_id: 5, x: 'pINg'}
|
38
62
|
-
|
39
63
|
description: "FindOneAndDelete when no documents match"
|
40
64
|
operation:
|
41
65
|
name: findOneAndDelete
|
42
66
|
arguments:
|
43
|
-
filter: {_id:
|
67
|
+
filter: {_id: 6}
|
44
68
|
projection: {x: 1, _id: 0}
|
45
69
|
sort: {x: 1}
|
46
70
|
|
@@ -51,4 +75,5 @@ tests:
|
|
51
75
|
- {_id: 1, x: 11}
|
52
76
|
- {_id: 2, x: 22}
|
53
77
|
- {_id: 3, x: 33}
|
54
|
-
|
78
|
+
- {_id: 4, x: 'ping'}
|
79
|
+
- {_id: 5, x: 'pINg'}
|
@@ -2,6 +2,7 @@ data:
|
|
2
2
|
- {_id: 1, x: 11}
|
3
3
|
- {_id: 2, x: 22}
|
4
4
|
- {_id: 3, x: 33}
|
5
|
+
- {_id: 4, x: 'ping'}
|
5
6
|
|
6
7
|
tests:
|
7
8
|
-
|
@@ -9,7 +10,7 @@ tests:
|
|
9
10
|
operation:
|
10
11
|
name: findOneAndReplace
|
11
12
|
arguments:
|
12
|
-
filter:
|
13
|
+
filter:
|
13
14
|
_id: {$gt: 1}
|
14
15
|
replacement: {x: 32}
|
15
16
|
projection: {x: 1, _id: 0}
|
@@ -22,12 +23,13 @@ tests:
|
|
22
23
|
- {_id: 1, x: 11}
|
23
24
|
- {_id: 2, x: 32}
|
24
25
|
- {_id: 3, x: 33}
|
26
|
+
- {_id: 4, x: 'ping'}
|
25
27
|
-
|
26
28
|
description: "FindOneAndReplace when many documents match returning the document after modification"
|
27
29
|
operation:
|
28
30
|
name: findOneAndReplace
|
29
31
|
arguments:
|
30
|
-
filter:
|
32
|
+
filter:
|
31
33
|
_id: {$gt: 1}
|
32
34
|
replacement: {x: 32}
|
33
35
|
projection: {x: 1, _id: 0}
|
@@ -41,6 +43,7 @@ tests:
|
|
41
43
|
- {_id: 1, x: 11}
|
42
44
|
- {_id: 2, x: 32}
|
43
45
|
- {_id: 3, x: 33}
|
46
|
+
- {_id: 4, x: 'ping'}
|
44
47
|
-
|
45
48
|
description: "FindOneAndReplace when one document matches returning the document before modification"
|
46
49
|
operation:
|
@@ -58,6 +61,7 @@ tests:
|
|
58
61
|
- {_id: 1, x: 11}
|
59
62
|
- {_id: 2, x: 32}
|
60
63
|
- {_id: 3, x: 33}
|
64
|
+
- {_id: 4, x: 'ping'}
|
61
65
|
-
|
62
66
|
description: "FindOneAndReplace when one document matches returning the document after modification"
|
63
67
|
operation:
|
@@ -76,13 +80,35 @@ tests:
|
|
76
80
|
- {_id: 1, x: 11}
|
77
81
|
- {_id: 2, x: 32}
|
78
82
|
- {_id: 3, x: 33}
|
83
|
+
- {_id: 4, x: 'ping'}
|
84
|
+
|
85
|
+
-
|
86
|
+
description: "FindOneAndReplace when one document matches with collation returning the document after modification"
|
87
|
+
operation:
|
88
|
+
name: findOneAndReplace
|
89
|
+
arguments:
|
90
|
+
filter: {x: 'PING'}
|
91
|
+
replacement: {x: 32}
|
92
|
+
projection: {x: 1, _id: 0}
|
93
|
+
returnDocument: After
|
94
|
+
sort: {x: 1}
|
95
|
+
collation: { locale: 'en_US', strength: 2 }
|
96
|
+
|
97
|
+
outcome:
|
98
|
+
result: {x: 32}
|
99
|
+
collection:
|
100
|
+
data:
|
101
|
+
- {_id: 1, x: 11}
|
102
|
+
- {_id: 2, x: 22}
|
103
|
+
- {_id: 3, x: 33}
|
104
|
+
- {_id: 4, x: 32}
|
79
105
|
-
|
80
106
|
description: "FindOneAndReplace when no documents match returning the document before modification"
|
81
107
|
operation:
|
82
108
|
name: findOneAndReplace
|
83
109
|
arguments:
|
84
|
-
filter: {_id:
|
85
|
-
replacement: {x:
|
110
|
+
filter: {_id: 5}
|
111
|
+
replacement: {x: 55}
|
86
112
|
projection: {x: 1, _id: 0}
|
87
113
|
sort: {x: 1}
|
88
114
|
|
@@ -93,13 +119,14 @@ tests:
|
|
93
119
|
- {_id: 1, x: 11}
|
94
120
|
- {_id: 2, x: 22}
|
95
121
|
- {_id: 3, x: 33}
|
122
|
+
- {_id: 4, x: 'ping'}
|
96
123
|
-
|
97
124
|
description: "FindOneAndReplace when no documents match with upsert returning the document before modification"
|
98
125
|
operation:
|
99
126
|
name: findOneAndReplace
|
100
127
|
arguments:
|
101
|
-
filter: {_id:
|
102
|
-
replacement: {x:
|
128
|
+
filter: {_id: 5}
|
129
|
+
replacement: {x: 55}
|
103
130
|
projection: {x: 1, _id: 0}
|
104
131
|
sort: {x: 1}
|
105
132
|
upsert: true
|
@@ -111,14 +138,15 @@ tests:
|
|
111
138
|
- {_id: 1, x: 11}
|
112
139
|
- {_id: 2, x: 22}
|
113
140
|
- {_id: 3, x: 33}
|
114
|
-
- {_id: 4, x:
|
141
|
+
- {_id: 4, x: 'ping'}
|
142
|
+
- {_id: 5, x: 55}
|
115
143
|
-
|
116
144
|
description: "FindOneAndReplace when no documents match returning the document after modification"
|
117
145
|
operation:
|
118
146
|
name: findOneAndReplace
|
119
147
|
arguments:
|
120
|
-
filter: {_id:
|
121
|
-
replacement: {x:
|
148
|
+
filter: {_id: 5}
|
149
|
+
replacement: {x: 55}
|
122
150
|
projection: {x: 1, _id: 0}
|
123
151
|
returnDocument: After
|
124
152
|
sort: {x: 1}
|
@@ -130,24 +158,25 @@ tests:
|
|
130
158
|
- {_id: 1, x: 11}
|
131
159
|
- {_id: 2, x: 22}
|
132
160
|
- {_id: 3, x: 33}
|
161
|
+
- {_id: 4, x: 'ping'}
|
133
162
|
-
|
134
163
|
description: "FindOneAndReplace when no documents match with upsert returning the document after modification"
|
135
164
|
operation:
|
136
165
|
name: findOneAndReplace
|
137
166
|
arguments:
|
138
|
-
filter: {_id:
|
139
|
-
replacement: {x:
|
167
|
+
filter: {_id: 5}
|
168
|
+
replacement: {x: 55}
|
140
169
|
projection: {x: 1, _id: 0}
|
141
170
|
returnDocument: After
|
142
171
|
sort: {x: 1}
|
143
172
|
upsert: true
|
144
173
|
|
145
174
|
outcome:
|
146
|
-
result: {x:
|
175
|
+
result: {x: 55}
|
147
176
|
collection:
|
148
177
|
data:
|
149
178
|
- {_id: 1, x: 11}
|
150
179
|
- {_id: 2, x: 22}
|
151
180
|
- {_id: 3, x: 33}
|
152
|
-
- {_id: 4, x:
|
153
|
-
|
181
|
+
- {_id: 4, x: 'ping'}
|
182
|
+
- {_id: 5, x: 55}
|
@@ -2,6 +2,8 @@ data:
|
|
2
2
|
- {_id: 1, x: 11}
|
3
3
|
- {_id: 2, x: 22}
|
4
4
|
- {_id: 3, x: 33}
|
5
|
+
- {_id: 4, x: 'ping'}
|
6
|
+
- {_id: 5, x: 'pINg'}
|
5
7
|
|
6
8
|
tests:
|
7
9
|
-
|
@@ -9,9 +11,9 @@ tests:
|
|
9
11
|
operation:
|
10
12
|
name: findOneAndUpdate
|
11
13
|
arguments:
|
12
|
-
filter:
|
14
|
+
filter:
|
13
15
|
_id: {$gt: 1}
|
14
|
-
update:
|
16
|
+
update:
|
15
17
|
$inc: {x: 1}
|
16
18
|
projection: {x: 1, _id: 0}
|
17
19
|
sort: {x: 1}
|
@@ -23,6 +25,32 @@ tests:
|
|
23
25
|
- {_id: 1, x: 11}
|
24
26
|
- {_id: 2, x: 23}
|
25
27
|
- {_id: 3, x: 33}
|
28
|
+
- {_id: 4, x: 'ping'}
|
29
|
+
- {_id: 5, x: 'pINg'}
|
30
|
+
|
31
|
+
-
|
32
|
+
description: "FindOneAndUpdate when many documents match with collation returning the document before modification"
|
33
|
+
operation:
|
34
|
+
name: findOneAndUpdate
|
35
|
+
arguments:
|
36
|
+
filter:
|
37
|
+
x: 'PING'
|
38
|
+
update:
|
39
|
+
$set: {x: 'pong'}
|
40
|
+
projection: {x: 1, _id: 0}
|
41
|
+
sort: {_id: 1}
|
42
|
+
collation: { locale: 'en_US', strength: 2 }
|
43
|
+
|
44
|
+
outcome:
|
45
|
+
result: {x: 'ping'}
|
46
|
+
collection:
|
47
|
+
data:
|
48
|
+
- {_id: 1, x: 11}
|
49
|
+
- {_id: 2, x: 22}
|
50
|
+
- {_id: 3, x: 33}
|
51
|
+
- {_id: 4, x: 'pong'}
|
52
|
+
- {_id: 5, x: 'pINg'}
|
53
|
+
|
26
54
|
-
|
27
55
|
description: "FindOneAndUpdate when many documents match returning the document after modification"
|
28
56
|
operation:
|
@@ -43,6 +71,8 @@ tests:
|
|
43
71
|
- {_id: 1, x: 11}
|
44
72
|
- {_id: 2, x: 23}
|
45
73
|
- {_id: 3, x: 33}
|
74
|
+
- {_id: 4, x: 'ping'}
|
75
|
+
- {_id: 5, x: 'pINg'}
|
46
76
|
-
|
47
77
|
description: "FindOneAndUpdate when one document matches returning the document before modification"
|
48
78
|
operation:
|
@@ -61,6 +91,8 @@ tests:
|
|
61
91
|
- {_id: 1, x: 11}
|
62
92
|
- {_id: 2, x: 23}
|
63
93
|
- {_id: 3, x: 33}
|
94
|
+
- {_id: 4, x: 'ping'}
|
95
|
+
- {_id: 5, x: 'pINg'}
|
64
96
|
-
|
65
97
|
description: "FindOneAndUpdate when one document matches returning the document after modification"
|
66
98
|
operation:
|
@@ -80,12 +112,14 @@ tests:
|
|
80
112
|
- {_id: 1, x: 11}
|
81
113
|
- {_id: 2, x: 23}
|
82
114
|
- {_id: 3, x: 33}
|
115
|
+
- {_id: 4, x: 'ping'}
|
116
|
+
- {_id: 5, x: 'pINg'}
|
83
117
|
-
|
84
118
|
description: "FindOneAndUpdate when no documents match returning the document before modification"
|
85
119
|
operation:
|
86
120
|
name: findOneAndUpdate
|
87
121
|
arguments:
|
88
|
-
filter: {_id:
|
122
|
+
filter: {_id: 6}
|
89
123
|
update:
|
90
124
|
$inc: {x: 1}
|
91
125
|
projection: {x: 1, _id: 0}
|
@@ -98,12 +132,14 @@ tests:
|
|
98
132
|
- {_id: 1, x: 11}
|
99
133
|
- {_id: 2, x: 22}
|
100
134
|
- {_id: 3, x: 33}
|
135
|
+
- {_id: 4, x: 'ping'}
|
136
|
+
- {_id: 5, x: 'pINg'}
|
101
137
|
-
|
102
138
|
description: "FindOneAndUpdate when no documents match with upsert returning the document before modification"
|
103
139
|
operation:
|
104
140
|
name: findOneAndUpdate
|
105
141
|
arguments:
|
106
|
-
filter: {_id:
|
142
|
+
filter: {_id: 6}
|
107
143
|
update:
|
108
144
|
$inc: {x: 1}
|
109
145
|
projection: {x: 1, _id: 0}
|
@@ -117,13 +153,15 @@ tests:
|
|
117
153
|
- {_id: 1, x: 11}
|
118
154
|
- {_id: 2, x: 22}
|
119
155
|
- {_id: 3, x: 33}
|
120
|
-
- {_id: 4, x:
|
156
|
+
- {_id: 4, x: 'ping'}
|
157
|
+
- {_id: 5, x: 'pINg'}
|
158
|
+
- {_id: 6, x: 1}
|
121
159
|
-
|
122
160
|
description: "FindOneAndUpdate when no documents match returning the document after modification"
|
123
161
|
operation:
|
124
162
|
name: findOneAndUpdate
|
125
163
|
arguments:
|
126
|
-
filter: {_id:
|
164
|
+
filter: {_id: 6}
|
127
165
|
update:
|
128
166
|
$inc: {x: 1}
|
129
167
|
projection: {x: 1, _id: 0}
|
@@ -137,12 +175,14 @@ tests:
|
|
137
175
|
- {_id: 1, x: 11}
|
138
176
|
- {_id: 2, x: 22}
|
139
177
|
- {_id: 3, x: 33}
|
178
|
+
- {_id: 4, x: 'ping'}
|
179
|
+
- {_id: 5, x: 'pINg'}
|
140
180
|
-
|
141
181
|
description: "FindOneAndUpdate when no documents match with upsert returning the document after modification"
|
142
182
|
operation:
|
143
183
|
name: findOneAndUpdate
|
144
184
|
arguments:
|
145
|
-
filter: {_id:
|
185
|
+
filter: {_id: 6}
|
146
186
|
update:
|
147
187
|
$inc: {x: 1}
|
148
188
|
projection: {x: 1, _id: 0}
|
@@ -157,5 +197,7 @@ tests:
|
|
157
197
|
- {_id: 1, x: 11}
|
158
198
|
- {_id: 2, x: 22}
|
159
199
|
- {_id: 3, x: 33}
|
160
|
-
- {_id: 4, x:
|
200
|
+
- {_id: 4, x: 'ping'}
|
201
|
+
- {_id: 5, x: 'pINg'}
|
202
|
+
- {_id: 6, x: 1}
|
161
203
|
|
@@ -2,6 +2,7 @@ data:
|
|
2
2
|
- {_id: 1, x: 11}
|
3
3
|
- {_id: 2, x: 22}
|
4
4
|
- {_id: 3, x: 33}
|
5
|
+
- {_id: 4, x: 'ping'}
|
5
6
|
|
6
7
|
tests:
|
7
8
|
-
|
@@ -9,7 +10,7 @@ tests:
|
|
9
10
|
operation:
|
10
11
|
name: "replaceOne"
|
11
12
|
arguments:
|
12
|
-
filter:
|
13
|
+
filter:
|
13
14
|
_id: {$gt: 1}
|
14
15
|
replacement: {x: 111}
|
15
16
|
|
@@ -36,13 +37,33 @@ tests:
|
|
36
37
|
- {_id: 1, x: 111}
|
37
38
|
- {_id: 2, x: 22}
|
38
39
|
- {_id: 3, x: 33}
|
40
|
+
- {_id: 4, x: 'ping'}
|
41
|
+
-
|
42
|
+
description: "ReplaceOne when one document matches with collation"
|
43
|
+
operation:
|
44
|
+
name: "replaceOne"
|
45
|
+
arguments:
|
46
|
+
filter: {x: 'PING'}
|
47
|
+
replacement: {_id: 4, x: 'pong'}
|
48
|
+
collation: {locale: 'en_US', strength: 2}
|
49
|
+
|
50
|
+
outcome:
|
51
|
+
result:
|
52
|
+
matchedCount: 1
|
53
|
+
modifiedCount: 1
|
54
|
+
collection:
|
55
|
+
data:
|
56
|
+
- {_id: 1, x: 11}
|
57
|
+
- {_id: 2, x: 22}
|
58
|
+
- {_id: 3, x: 33}
|
59
|
+
- {_id: 4, x: 'pong'}
|
39
60
|
-
|
40
61
|
description: "ReplaceOne when no documents match"
|
41
62
|
operation:
|
42
63
|
name: "replaceOne"
|
43
64
|
arguments:
|
44
|
-
filter: {_id:
|
45
|
-
replacement: {_id:
|
65
|
+
filter: {_id: 5}
|
66
|
+
replacement: {_id: 5, x: 1}
|
46
67
|
|
47
68
|
outcome:
|
48
69
|
result:
|
@@ -53,12 +74,13 @@ tests:
|
|
53
74
|
- {_id: 1, x: 11}
|
54
75
|
- {_id: 2, x: 22}
|
55
76
|
- {_id: 3, x: 33}
|
77
|
+
- {_id: 4, x: 'ping'}
|
56
78
|
-
|
57
79
|
description: "ReplaceOne with upsert when no documents match without an id specified"
|
58
80
|
operation:
|
59
81
|
name: "replaceOne"
|
60
82
|
arguments:
|
61
|
-
filter: {_id:
|
83
|
+
filter: {_id: 5}
|
62
84
|
replacement: {x: 1}
|
63
85
|
upsert: true
|
64
86
|
|
@@ -66,31 +88,33 @@ tests:
|
|
66
88
|
result:
|
67
89
|
matchedCount: 0
|
68
90
|
modifiedCount: 0
|
69
|
-
upsertedId:
|
91
|
+
upsertedId: 5
|
70
92
|
collection:
|
71
93
|
data:
|
72
94
|
- {_id: 1, x: 11}
|
73
95
|
- {_id: 2, x: 22}
|
74
96
|
- {_id: 3, x: 33}
|
75
|
-
- {_id: 4, x:
|
97
|
+
- {_id: 4, x: 'ping'}
|
98
|
+
- {_id: 5, x: 1}
|
76
99
|
-
|
77
100
|
description: "ReplaceOne with upsert when no documents match with an id specified"
|
78
101
|
operation:
|
79
102
|
name: "replaceOne"
|
80
103
|
arguments:
|
81
|
-
filter: {_id:
|
82
|
-
replacement: {_id:
|
104
|
+
filter: {_id: 5}
|
105
|
+
replacement: {_id: 5, x: 1}
|
83
106
|
upsert: true
|
84
107
|
|
85
108
|
outcome:
|
86
109
|
result:
|
87
110
|
matchedCount: 0
|
88
111
|
modifiedCount: 0
|
89
|
-
upsertedId:
|
112
|
+
upsertedId: 5
|
90
113
|
collection:
|
91
114
|
data:
|
92
115
|
- {_id: 1, x: 11}
|
93
116
|
- {_id: 2, x: 22}
|
94
117
|
- {_id: 3, x: 33}
|
95
|
-
- {_id: 4, x:
|
118
|
+
- {_id: 4, x: 'ping'}
|
119
|
+
- {_id: 5, x: 1}
|
96
120
|
|