mongo 2.3.1 → 2.4.0.rc0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|