mongo 2.4.0.rc0 → 2.4.0.rc1

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.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +1 -2
  4. data/lib/mongo/bulk_write/validatable.rb +3 -1
  5. data/lib/mongo/client.rb +30 -3
  6. data/lib/mongo/cluster/app_metadata.rb +7 -2
  7. data/lib/mongo/collection.rb +3 -1
  8. data/lib/mongo/collection/view.rb +3 -1
  9. data/lib/mongo/collection/view/aggregation.rb +3 -1
  10. data/lib/mongo/collection/view/builder/find_command.rb +20 -5
  11. data/lib/mongo/collection/view/map_reduce.rb +3 -1
  12. data/lib/mongo/collection/view/writable.rb +12 -2
  13. data/lib/mongo/cursor/builder/get_more_command.rb +3 -2
  14. data/lib/mongo/error/closed_stream.rb +1 -1
  15. data/lib/mongo/error/invalid_server_preference.rb +1 -1
  16. data/lib/mongo/index/view.rb +3 -1
  17. data/lib/mongo/operation/write/bulk/mergable.rb +1 -1
  18. data/lib/mongo/operation/write/create_index.rb +1 -1
  19. data/lib/mongo/operation/write/delete.rb +1 -1
  20. data/lib/mongo/operation/write/update.rb +1 -1
  21. data/lib/mongo/protocol/delete.rb +4 -1
  22. data/lib/mongo/protocol/get_more.rb +4 -1
  23. data/lib/mongo/protocol/insert.rb +7 -3
  24. data/lib/mongo/protocol/kill_cursors.rb +4 -1
  25. data/lib/mongo/protocol/message.rb +5 -1
  26. data/lib/mongo/protocol/query.rb +11 -4
  27. data/lib/mongo/protocol/update.rb +4 -1
  28. data/lib/mongo/server/connectable.rb +8 -2
  29. data/lib/mongo/server/connection_pool.rb +3 -1
  30. data/lib/mongo/server/monitor.rb +1 -0
  31. data/lib/mongo/socket.rb +16 -8
  32. data/lib/mongo/socket/ssl.rb +24 -9
  33. data/lib/mongo/uri.rb +6 -6
  34. data/lib/mongo/version.rb +1 -1
  35. data/mongo.gemspec +1 -1
  36. data/spec/mongo/bulk_write_spec.rb +117 -0
  37. data/spec/mongo/collection/view/aggregation_spec.rb +26 -0
  38. data/spec/mongo/collection/view/builder/find_command_spec.rb +244 -2
  39. data/spec/mongo/collection/view/map_reduce_spec.rb +13 -0
  40. data/spec/mongo/collection/view/readable_spec.rb +26 -0
  41. data/spec/mongo/collection/view/writable_spec.rb +104 -0
  42. data/spec/mongo/collection/view_spec.rb +13 -0
  43. data/spec/mongo/collection_spec.rb +226 -7
  44. data/spec/mongo/crud_spec.rb +5 -5
  45. data/spec/mongo/index/view_spec.rb +53 -0
  46. data/spec/mongo/server/connection_spec.rb +45 -26
  47. data/spec/mongo/socket/ssl_spec.rb +358 -22
  48. data/spec/spec_helper.rb +4 -0
  49. data/spec/support/authorization.rb +3 -3
  50. data/spec/support/certificates/client_cert.pem +21 -0
  51. data/spec/support/certificates/client_key.pem +28 -0
  52. data/spec/support/certificates/client_key_encrypted.pem +30 -0
  53. data/spec/support/crud.rb +67 -22
  54. data/spec/support/crud/read.rb +18 -36
  55. data/spec/support/crud/write.rb +0 -44
  56. data/spec/support/crud_tests/read/aggregate-collation.yml +17 -0
  57. data/spec/support/crud_tests/read/aggregate-out.yml +28 -0
  58. data/spec/support/crud_tests/read/aggregate.yml +1 -35
  59. data/spec/support/crud_tests/read/count-collation.yml +15 -0
  60. data/spec/support/crud_tests/read/count.yml +3 -15
  61. data/spec/support/crud_tests/read/distinct-collation.yml +17 -0
  62. data/spec/support/crud_tests/read/distinct.yml +1 -14
  63. data/spec/support/crud_tests/read/find-collation.yml +15 -0
  64. data/spec/support/crud_tests/read/find.yml +1 -12
  65. data/spec/support/crud_tests/write/deleteMany-collation.yml +22 -0
  66. data/spec/support/crud_tests/write/deleteMany.yml +1 -23
  67. data/spec/support/crud_tests/write/deleteOne-collation.yml +22 -0
  68. data/spec/support/crud_tests/write/deleteOne.yml +1 -21
  69. data/spec/support/crud_tests/write/findOneAndDelete-collation.yml +23 -0
  70. data/spec/support/crud_tests/write/findOneAndDelete.yml +2 -28
  71. data/spec/support/crud_tests/write/findOneAndReplace-collation.yml +24 -0
  72. data/spec/support/crud_tests/write/findOneAndReplace-upsert.yml +47 -0
  73. data/spec/support/crud_tests/write/findOneAndReplace.yml +13 -53
  74. data/spec/support/crud_tests/write/findOneAndUpdate-collation.yml +27 -0
  75. data/spec/support/crud_tests/write/findOneAndUpdate.yml +8 -51
  76. data/spec/support/crud_tests/write/insertMany.yml +1 -2
  77. data/spec/support/crud_tests/write/insertOne.yml +1 -2
  78. data/spec/support/crud_tests/write/replaceOne-collation.yml +23 -0
  79. data/spec/support/crud_tests/write/replaceOne-upsert.yml +48 -0
  80. data/spec/support/crud_tests/write/replaceOne.yml +11 -45
  81. data/spec/support/crud_tests/write/updateMany-collation.yml +27 -0
  82. data/spec/support/crud_tests/write/updateMany.yml +10 -42
  83. data/spec/support/crud_tests/write/updateOne-collation.yml +24 -0
  84. data/spec/support/crud_tests/write/updateOne.yml +7 -33
  85. data/spec/support/sdam/rs/new_primary_new_setversion.yml +1 -1
  86. data/spec/support/sdam/rs/null_election_id.yml +1 -0
  87. data/spec/support/sdam/rs/primary_disconnect_electionid.yml +2 -3
  88. data/spec/support/sdam/rs/primary_disconnect_setversion.yml +1 -2
  89. data/spec/support/sdam/single/direct_connection_rsarbiter.yml +1 -1
  90. data/spec/support/sdam/single/direct_connection_rsprimary.yml +1 -1
  91. data/spec/support/sdam/single/direct_connection_rssecondary.yml +1 -1
  92. metadata +40 -4
  93. metadata.gz.sig +0 -0
@@ -2,7 +2,6 @@ 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
5
 
7
6
  tests:
8
7
  -
@@ -10,7 +9,7 @@ tests:
10
9
  operation:
11
10
  name: findOneAndReplace
12
11
  arguments:
13
- filter:
12
+ filter:
14
13
  _id: {$gt: 1}
15
14
  replacement: {x: 32}
16
15
  projection: {x: 1, _id: 0}
@@ -23,13 +22,12 @@ tests:
23
22
  - {_id: 1, x: 11}
24
23
  - {_id: 2, x: 32}
25
24
  - {_id: 3, x: 33}
26
- - {_id: 4, x: 'ping'}
27
25
  -
28
26
  description: "FindOneAndReplace when many documents match returning the document after modification"
29
27
  operation:
30
28
  name: findOneAndReplace
31
29
  arguments:
32
- filter:
30
+ filter:
33
31
  _id: {$gt: 1}
34
32
  replacement: {x: 32}
35
33
  projection: {x: 1, _id: 0}
@@ -43,7 +41,6 @@ tests:
43
41
  - {_id: 1, x: 11}
44
42
  - {_id: 2, x: 32}
45
43
  - {_id: 3, x: 33}
46
- - {_id: 4, x: 'ping'}
47
44
  -
48
45
  description: "FindOneAndReplace when one document matches returning the document before modification"
49
46
  operation:
@@ -61,7 +58,6 @@ tests:
61
58
  - {_id: 1, x: 11}
62
59
  - {_id: 2, x: 32}
63
60
  - {_id: 3, x: 33}
64
- - {_id: 4, x: 'ping'}
65
61
  -
66
62
  description: "FindOneAndReplace when one document matches returning the document after modification"
67
63
  operation:
@@ -80,35 +76,13 @@ tests:
80
76
  - {_id: 1, x: 11}
81
77
  - {_id: 2, x: 32}
82
78
  - {_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}
105
79
  -
106
80
  description: "FindOneAndReplace when no documents match returning the document before modification"
107
81
  operation:
108
82
  name: findOneAndReplace
109
83
  arguments:
110
- filter: {_id: 5}
111
- replacement: {x: 55}
84
+ filter: {_id: 4}
85
+ replacement: {x: 44}
112
86
  projection: {x: 1, _id: 0}
113
87
  sort: {x: 1}
114
88
 
@@ -119,34 +93,27 @@ tests:
119
93
  - {_id: 1, x: 11}
120
94
  - {_id: 2, x: 22}
121
95
  - {_id: 3, x: 33}
122
- - {_id: 4, x: 'ping'}
123
96
  -
124
97
  description: "FindOneAndReplace when no documents match with upsert returning the document before modification"
125
98
  operation:
126
99
  name: findOneAndReplace
127
100
  arguments:
128
- filter: {_id: 5}
129
- replacement: {x: 55}
101
+ filter: {_id: 4}
102
+ replacement: {x: 44}
130
103
  projection: {x: 1, _id: 0}
131
104
  sort: {x: 1}
132
105
  upsert: true
133
106
 
134
107
  outcome:
135
108
  result: null
136
- collection:
137
- data:
138
- - {_id: 1, x: 11}
139
- - {_id: 2, x: 22}
140
- - {_id: 3, x: 33}
141
- - {_id: 4, x: 'ping'}
142
- - {_id: 5, x: 55}
109
+ # See SERVER-5289 for why the collection data is not checked for server versions < 2.6
143
110
  -
144
111
  description: "FindOneAndReplace when no documents match returning the document after modification"
145
112
  operation:
146
113
  name: findOneAndReplace
147
114
  arguments:
148
- filter: {_id: 5}
149
- replacement: {x: 55}
115
+ filter: {_id: 4}
116
+ replacement: {x: 44}
150
117
  projection: {x: 1, _id: 0}
151
118
  returnDocument: After
152
119
  sort: {x: 1}
@@ -158,25 +125,18 @@ tests:
158
125
  - {_id: 1, x: 11}
159
126
  - {_id: 2, x: 22}
160
127
  - {_id: 3, x: 33}
161
- - {_id: 4, x: 'ping'}
162
128
  -
163
129
  description: "FindOneAndReplace when no documents match with upsert returning the document after modification"
164
130
  operation:
165
131
  name: findOneAndReplace
166
132
  arguments:
167
- filter: {_id: 5}
168
- replacement: {x: 55}
133
+ filter: {_id: 4}
134
+ replacement: {x: 44}
169
135
  projection: {x: 1, _id: 0}
170
136
  returnDocument: After
171
137
  sort: {x: 1}
172
138
  upsert: true
173
139
 
174
140
  outcome:
175
- result: {x: 55}
176
- collection:
177
- data:
178
- - {_id: 1, x: 11}
179
- - {_id: 2, x: 22}
180
- - {_id: 3, x: 33}
181
- - {_id: 4, x: 'ping'}
182
- - {_id: 5, x: 55}
141
+ result: {x: 44}
142
+ # See SERVER-5289 for why the collection data is not checked for server versions < 2.6
@@ -0,0 +1,27 @@
1
+ data:
2
+ - {_id: 1, x: 11}
3
+ - {_id: 2, x: 'ping'}
4
+ - {_id: 3, x: 'pINg'}
5
+ minServerVersion: '3.4'
6
+
7
+ tests:
8
+ -
9
+ description: "FindOneAndUpdate when many documents match with collation returning the document before modification"
10
+ operation:
11
+ name: findOneAndUpdate
12
+ arguments:
13
+ filter:
14
+ x: 'PING'
15
+ update:
16
+ $set: {x: 'pong'}
17
+ projection: {x: 1, _id: 0}
18
+ sort: {_id: 1}
19
+ collation: { locale: 'en_US', strength: 2 } # https://docs.mongodb.com/master/reference/collation/#collation-document
20
+
21
+ outcome:
22
+ result: {x: 'ping'}
23
+ collection:
24
+ data:
25
+ - {_id: 1, x: 11}
26
+ - {_id: 2, x: 'pong'}
27
+ - {_id: 3, x: 'pINg'}
@@ -2,8 +2,6 @@ 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'}
7
5
 
8
6
  tests:
9
7
  -
@@ -11,9 +9,9 @@ tests:
11
9
  operation:
12
10
  name: findOneAndUpdate
13
11
  arguments:
14
- filter:
12
+ filter:
15
13
  _id: {$gt: 1}
16
- update:
14
+ update:
17
15
  $inc: {x: 1}
18
16
  projection: {x: 1, _id: 0}
19
17
  sort: {x: 1}
@@ -25,32 +23,6 @@ tests:
25
23
  - {_id: 1, x: 11}
26
24
  - {_id: 2, x: 23}
27
25
  - {_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
-
54
26
  -
55
27
  description: "FindOneAndUpdate when many documents match returning the document after modification"
56
28
  operation:
@@ -71,8 +43,6 @@ tests:
71
43
  - {_id: 1, x: 11}
72
44
  - {_id: 2, x: 23}
73
45
  - {_id: 3, x: 33}
74
- - {_id: 4, x: 'ping'}
75
- - {_id: 5, x: 'pINg'}
76
46
  -
77
47
  description: "FindOneAndUpdate when one document matches returning the document before modification"
78
48
  operation:
@@ -91,8 +61,6 @@ tests:
91
61
  - {_id: 1, x: 11}
92
62
  - {_id: 2, x: 23}
93
63
  - {_id: 3, x: 33}
94
- - {_id: 4, x: 'ping'}
95
- - {_id: 5, x: 'pINg'}
96
64
  -
97
65
  description: "FindOneAndUpdate when one document matches returning the document after modification"
98
66
  operation:
@@ -112,14 +80,12 @@ tests:
112
80
  - {_id: 1, x: 11}
113
81
  - {_id: 2, x: 23}
114
82
  - {_id: 3, x: 33}
115
- - {_id: 4, x: 'ping'}
116
- - {_id: 5, x: 'pINg'}
117
83
  -
118
84
  description: "FindOneAndUpdate when no documents match returning the document before modification"
119
85
  operation:
120
86
  name: findOneAndUpdate
121
87
  arguments:
122
- filter: {_id: 6}
88
+ filter: {_id: 4}
123
89
  update:
124
90
  $inc: {x: 1}
125
91
  projection: {x: 1, _id: 0}
@@ -132,14 +98,12 @@ tests:
132
98
  - {_id: 1, x: 11}
133
99
  - {_id: 2, x: 22}
134
100
  - {_id: 3, x: 33}
135
- - {_id: 4, x: 'ping'}
136
- - {_id: 5, x: 'pINg'}
137
101
  -
138
102
  description: "FindOneAndUpdate when no documents match with upsert returning the document before modification"
139
103
  operation:
140
104
  name: findOneAndUpdate
141
105
  arguments:
142
- filter: {_id: 6}
106
+ filter: {_id: 4}
143
107
  update:
144
108
  $inc: {x: 1}
145
109
  projection: {x: 1, _id: 0}
@@ -153,15 +117,13 @@ tests:
153
117
  - {_id: 1, x: 11}
154
118
  - {_id: 2, x: 22}
155
119
  - {_id: 3, x: 33}
156
- - {_id: 4, x: 'ping'}
157
- - {_id: 5, x: 'pINg'}
158
- - {_id: 6, x: 1}
120
+ - {_id: 4, x: 1}
159
121
  -
160
122
  description: "FindOneAndUpdate when no documents match returning the document after modification"
161
123
  operation:
162
124
  name: findOneAndUpdate
163
125
  arguments:
164
- filter: {_id: 6}
126
+ filter: {_id: 4}
165
127
  update:
166
128
  $inc: {x: 1}
167
129
  projection: {x: 1, _id: 0}
@@ -175,14 +137,12 @@ tests:
175
137
  - {_id: 1, x: 11}
176
138
  - {_id: 2, x: 22}
177
139
  - {_id: 3, x: 33}
178
- - {_id: 4, x: 'ping'}
179
- - {_id: 5, x: 'pINg'}
180
140
  -
181
141
  description: "FindOneAndUpdate when no documents match with upsert returning the document after modification"
182
142
  operation:
183
143
  name: findOneAndUpdate
184
144
  arguments:
185
- filter: {_id: 6}
145
+ filter: {_id: 4}
186
146
  update:
187
147
  $inc: {x: 1}
188
148
  projection: {x: 1, _id: 0}
@@ -197,7 +157,4 @@ tests:
197
157
  - {_id: 1, x: 11}
198
158
  - {_id: 2, x: 22}
199
159
  - {_id: 3, x: 33}
200
- - {_id: 4, x: 'ping'}
201
- - {_id: 5, x: 'pINg'}
202
- - {_id: 6, x: 1}
203
-
160
+ - {_id: 4, x: 1}
@@ -20,5 +20,4 @@ tests:
20
20
  data:
21
21
  - {_id: 1, x: 11}
22
22
  - {_id: 2, x: 22}
23
- - {_id: 3, x: 33}
24
-
23
+ - {_id: 3, x: 33}
@@ -15,5 +15,4 @@ tests:
15
15
  collection:
16
16
  data:
17
17
  - {_id: 1, x: 11}
18
- - {_id: 2, x: 22}
19
-
18
+ - {_id: 2, x: 22}
@@ -0,0 +1,23 @@
1
+ data:
2
+ - {_id: 1, x: 11}
3
+ - {_id: 2, x: 'ping'}
4
+ minServerVersion: '3.4'
5
+
6
+ tests:
7
+ -
8
+ description: "ReplaceOne when one document matches with collation"
9
+ operation:
10
+ name: "replaceOne"
11
+ arguments:
12
+ filter: {x: 'PING'}
13
+ replacement: {_id: 2, x: 'pong'}
14
+ collation: {locale: 'en_US', strength: 2} # https://docs.mongodb.com/master/reference/collation/#collation-document
15
+
16
+ outcome:
17
+ result:
18
+ matchedCount: 1
19
+ modifiedCount: 1
20
+ collection:
21
+ data:
22
+ - {_id: 1, x: 11}
23
+ - {_id: 2, x: 'pong'}
@@ -0,0 +1,48 @@
1
+ data:
2
+ - {_id: 1, x: 11}
3
+ - {_id: 2, x: 22}
4
+ - {_id: 3, x: 33}
5
+ minServerVersion: '2.6'
6
+ # See SERVER-5289 for why the collection data is only checked for server versions >= 2.6
7
+
8
+ tests:
9
+ -
10
+ description: "ReplaceOne with upsert when no documents match without an id specified"
11
+ operation:
12
+ name: "replaceOne"
13
+ arguments:
14
+ filter: {_id: 4}
15
+ replacement: {x: 1}
16
+ upsert: true
17
+
18
+ outcome:
19
+ result:
20
+ matchedCount: 0
21
+ modifiedCount: 0
22
+ upsertedId: 4
23
+ collection:
24
+ data:
25
+ - {_id: 1, x: 11}
26
+ - {_id: 2, x: 22}
27
+ - {_id: 3, x: 33}
28
+ - {_id: 4, x: 1}
29
+ -
30
+ description: "ReplaceOne with upsert when no documents match with an id specified"
31
+ operation:
32
+ name: "replaceOne"
33
+ arguments:
34
+ filter: {_id: 4}
35
+ replacement: {_id: 4, x: 1}
36
+ upsert: true
37
+
38
+ outcome:
39
+ result:
40
+ matchedCount: 0
41
+ modifiedCount: 0
42
+ upsertedId: 4
43
+ collection:
44
+ data:
45
+ - {_id: 1, x: 11}
46
+ - {_id: 2, x: 22}
47
+ - {_id: 3, x: 33}
48
+ - {_id: 4, x: 1}
@@ -2,7 +2,6 @@ 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
5
 
7
6
  tests:
8
7
  -
@@ -10,7 +9,7 @@ tests:
10
9
  operation:
11
10
  name: "replaceOne"
12
11
  arguments:
13
- filter:
12
+ filter:
14
13
  _id: {$gt: 1}
15
14
  replacement: {x: 111}
16
15
 
@@ -37,33 +36,13 @@ tests:
37
36
  - {_id: 1, x: 111}
38
37
  - {_id: 2, x: 22}
39
38
  - {_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'}
60
39
  -
61
40
  description: "ReplaceOne when no documents match"
62
41
  operation:
63
42
  name: "replaceOne"
64
43
  arguments:
65
- filter: {_id: 5}
66
- replacement: {_id: 5, x: 1}
44
+ filter: {_id: 4}
45
+ replacement: {_id: 4, x: 1}
67
46
 
68
47
  outcome:
69
48
  result:
@@ -74,13 +53,12 @@ tests:
74
53
  - {_id: 1, x: 11}
75
54
  - {_id: 2, x: 22}
76
55
  - {_id: 3, x: 33}
77
- - {_id: 4, x: 'ping'}
78
56
  -
79
57
  description: "ReplaceOne with upsert when no documents match without an id specified"
80
58
  operation:
81
59
  name: "replaceOne"
82
60
  arguments:
83
- filter: {_id: 5}
61
+ filter: {_id: 4}
84
62
  replacement: {x: 1}
85
63
  upsert: true
86
64
 
@@ -88,33 +66,21 @@ tests:
88
66
  result:
89
67
  matchedCount: 0
90
68
  modifiedCount: 0
91
- upsertedId: 5
92
- collection:
93
- data:
94
- - {_id: 1, x: 11}
95
- - {_id: 2, x: 22}
96
- - {_id: 3, x: 33}
97
- - {_id: 4, x: 'ping'}
98
- - {_id: 5, x: 1}
69
+ upsertedId: 4
70
+ # See SERVER-5289 for why the collection data is not checked for server versions < 2.6
71
+
99
72
  -
100
73
  description: "ReplaceOne with upsert when no documents match with an id specified"
101
74
  operation:
102
75
  name: "replaceOne"
103
76
  arguments:
104
- filter: {_id: 5}
105
- replacement: {_id: 5, x: 1}
77
+ filter: {_id: 4}
78
+ replacement: {_id: 4, x: 1}
106
79
  upsert: true
107
80
 
108
81
  outcome:
109
82
  result:
110
83
  matchedCount: 0
111
84
  modifiedCount: 0
112
- upsertedId: 5
113
- collection:
114
- data:
115
- - {_id: 1, x: 11}
116
- - {_id: 2, x: 22}
117
- - {_id: 3, x: 33}
118
- - {_id: 4, x: 'ping'}
119
- - {_id: 5, x: 1}
120
-
85
+ upsertedId: 4
86
+ # See SERVER-5289 for why the collection data is not checked for server versions < 2.6