mongo 2.0.0.rc → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +2 -1
- data/README.md +1 -4
- data/lib/mongo/client.rb +1 -1
- data/lib/mongo/collection.rb +1 -1
- data/lib/mongo/collection/view.rb +1 -1
- data/lib/mongo/collection/view/writable.rb +26 -10
- data/lib/mongo/database.rb +1 -1
- data/lib/mongo/grid/file.rb +12 -0
- data/lib/mongo/grid/file/chunk.rb +1 -1
- data/lib/mongo/grid/file/metadata.rb +13 -0
- data/lib/mongo/operation/aggregate.rb +1 -1
- data/lib/mongo/operation/write.rb +1 -5
- data/lib/mongo/operation/write/bulk.rb +17 -0
- data/lib/mongo/operation/write/{bulk_delete.rb → bulk/bulk_delete.rb} +1 -1
- data/lib/mongo/operation/{bulk_delete → write/bulk/bulk_delete}/result.rb +3 -0
- data/lib/mongo/operation/write/{bulk_insert.rb → bulk/bulk_insert.rb} +1 -1
- data/lib/mongo/operation/{bulk_insert → write/bulk/bulk_insert}/result.rb +3 -0
- data/lib/mongo/operation/write/{bulk_mergable.rb → bulk/bulk_mergable.rb} +0 -0
- data/lib/mongo/operation/write/{bulk_update.rb → bulk/bulk_update.rb} +1 -1
- data/lib/mongo/operation/{bulk_update → write/bulk/bulk_update}/result.rb +8 -1
- data/lib/mongo/operation/write/{legacy_bulk_mergable.rb → bulk/legacy_bulk_mergable.rb} +0 -0
- data/lib/mongo/operation/write/delete.rb +2 -0
- data/lib/mongo/operation/write/delete/result.rb +40 -0
- data/lib/mongo/operation/write/insert.rb +2 -0
- data/lib/mongo/operation/write/insert/result.rb +32 -0
- data/lib/mongo/operation/write/update.rb +9 -4
- data/lib/mongo/operation/write/update/result.rb +160 -0
- data/lib/mongo/server/connectable.rb +11 -0
- data/lib/mongo/server/connection.rb +1 -0
- data/lib/mongo/server/connection_pool.rb +1 -1
- data/lib/mongo/server/connection_pool/queue.rb +1 -1
- data/lib/mongo/server/monitor.rb +16 -0
- data/lib/mongo/server/monitor/connection.rb +1 -0
- data/lib/mongo/socket/ssl.rb +30 -8
- data/lib/mongo/version.rb +1 -1
- data/lib/mongo/write_concern/acknowledged.rb +1 -1
- data/lib/mongo/write_concern/unacknowledged.rb +1 -1
- data/spec/certificates/ca.pem +17 -0
- data/spec/certificates/client.pem +101 -0
- data/spec/certificates/crl.pem +10 -0
- data/spec/certificates/crl_client_revoked.pem +12 -0
- data/spec/certificates/password_protected.pem +51 -0
- data/spec/certificates/server.pem +34 -0
- data/spec/mongo/collection/view/writable_spec.rb +175 -0
- data/spec/mongo/crud_spec.rb +42 -0
- data/spec/mongo/grid/file/metadata_spec.rb +23 -0
- data/spec/mongo/grid/file_spec.rb +34 -0
- data/spec/mongo/operation/write/delete_spec.rb +8 -0
- data/spec/mongo/operation/write/insert_spec.rb +21 -8
- data/spec/mongo/operation/write/update_spec.rb +52 -1
- data/spec/mongo/server/connection_spec.rb +33 -10
- data/spec/mongo/server/monitor_spec.rb +14 -0
- data/spec/spec_helper.rb +2 -17
- data/spec/support/crud.rb +203 -0
- data/spec/support/crud/read.rb +144 -0
- data/spec/support/crud/write.rb +214 -0
- data/spec/support/crud_tests/read/aggregate.yml +43 -0
- data/spec/support/crud_tests/read/count.yml +37 -0
- data/spec/support/crud_tests/read/distinct.yml +33 -0
- data/spec/support/crud_tests/read/find.yml +50 -0
- data/spec/support/crud_tests/write/deleteMany.yml +36 -0
- data/spec/support/crud_tests/write/deleteOne.yml +49 -0
- data/spec/support/crud_tests/write/findOneAndDelete.yml +54 -0
- data/spec/support/crud_tests/write/findOneAndReplace.yml +153 -0
- data/spec/support/crud_tests/write/findOneAndUpdate.yml +161 -0
- data/spec/support/crud_tests/write/insertMany.yml +24 -0
- data/spec/support/crud_tests/write/insertOne.yml +19 -0
- data/spec/support/crud_tests/write/replaceOne.yml +96 -0
- data/spec/support/crud_tests/write/updateMany.yml +83 -0
- data/spec/support/crud_tests/write/updateOne.yml +80 -0
- metadata +64 -20
- metadata.gz.sig +0 -0
- data/spec/mongo_orchestration_spec.rb +0 -70
- data/spec/support/mongo_orchestration.rb +0 -61
- data/spec/support/mongo_orchestration/requestable.rb +0 -109
- data/spec/support/mongo_orchestration/standalone.rb +0 -57
@@ -0,0 +1,54 @@
|
|
1
|
+
data:
|
2
|
+
- {_id: 1, x: 11}
|
3
|
+
- {_id: 2, x: 22}
|
4
|
+
- {_id: 3, x: 33}
|
5
|
+
|
6
|
+
tests:
|
7
|
+
-
|
8
|
+
description: "FindOneAndDelete when many documents match"
|
9
|
+
operation:
|
10
|
+
name: findOneAndDelete
|
11
|
+
arguments:
|
12
|
+
filter:
|
13
|
+
_id: {$gt: 1}
|
14
|
+
projection: {x: 1, _id: 0}
|
15
|
+
sort: {x: 1}
|
16
|
+
|
17
|
+
outcome:
|
18
|
+
result: {x: 22}
|
19
|
+
collection:
|
20
|
+
data:
|
21
|
+
- {_id: 1, x: 11}
|
22
|
+
- {_id: 3, x: 33}
|
23
|
+
-
|
24
|
+
description: "FindOneAndDelete when one document matches"
|
25
|
+
operation:
|
26
|
+
name: findOneAndDelete
|
27
|
+
arguments:
|
28
|
+
filter: {_id: 2}
|
29
|
+
projection: {x: 1, _id: 0}
|
30
|
+
sort: {x: 1}
|
31
|
+
|
32
|
+
outcome:
|
33
|
+
result: {x: 22}
|
34
|
+
collection:
|
35
|
+
data:
|
36
|
+
- {_id: 1, x: 11}
|
37
|
+
- {_id: 3, x: 33}
|
38
|
+
-
|
39
|
+
description: "FindOneAndDelete when no documents match"
|
40
|
+
operation:
|
41
|
+
name: findOneAndDelete
|
42
|
+
arguments:
|
43
|
+
filter: {_id: 4}
|
44
|
+
projection: {x: 1, _id: 0}
|
45
|
+
sort: {x: 1}
|
46
|
+
|
47
|
+
outcome:
|
48
|
+
result: null
|
49
|
+
collection:
|
50
|
+
data:
|
51
|
+
- {_id: 1, x: 11}
|
52
|
+
- {_id: 2, x: 22}
|
53
|
+
- {_id: 3, x: 33}
|
54
|
+
|
@@ -0,0 +1,153 @@
|
|
1
|
+
data:
|
2
|
+
- {_id: 1, x: 11}
|
3
|
+
- {_id: 2, x: 22}
|
4
|
+
- {_id: 3, x: 33}
|
5
|
+
|
6
|
+
tests:
|
7
|
+
-
|
8
|
+
description: "FindOneAndReplace when many documents match returning the document before modification"
|
9
|
+
operation:
|
10
|
+
name: findOneAndReplace
|
11
|
+
arguments:
|
12
|
+
filter:
|
13
|
+
_id: {$gt: 1}
|
14
|
+
replacement: {x: 32}
|
15
|
+
projection: {x: 1, _id: 0}
|
16
|
+
sort: {x: 1}
|
17
|
+
|
18
|
+
outcome:
|
19
|
+
result: {x: 22}
|
20
|
+
collection:
|
21
|
+
data:
|
22
|
+
- {_id: 1, x: 11}
|
23
|
+
- {_id: 2, x: 32}
|
24
|
+
- {_id: 3, x: 33}
|
25
|
+
-
|
26
|
+
description: "FindOneAndReplace when many documents match returning the document after modification"
|
27
|
+
operation:
|
28
|
+
name: findOneAndReplace
|
29
|
+
arguments:
|
30
|
+
filter:
|
31
|
+
_id: {$gt: 1}
|
32
|
+
replacement: {x: 32}
|
33
|
+
projection: {x: 1, _id: 0}
|
34
|
+
returnDocument: After
|
35
|
+
sort: {x: 1}
|
36
|
+
|
37
|
+
outcome:
|
38
|
+
result: {x: 32}
|
39
|
+
collection:
|
40
|
+
data:
|
41
|
+
- {_id: 1, x: 11}
|
42
|
+
- {_id: 2, x: 32}
|
43
|
+
- {_id: 3, x: 33}
|
44
|
+
-
|
45
|
+
description: "FindOneAndReplace when one document matches returning the document before modification"
|
46
|
+
operation:
|
47
|
+
name: findOneAndReplace
|
48
|
+
arguments:
|
49
|
+
filter: {_id: 2}
|
50
|
+
replacement: {x: 32}
|
51
|
+
projection: {x: 1, _id: 0}
|
52
|
+
sort: {x: 1}
|
53
|
+
|
54
|
+
outcome:
|
55
|
+
result: {x: 22}
|
56
|
+
collection:
|
57
|
+
data:
|
58
|
+
- {_id: 1, x: 11}
|
59
|
+
- {_id: 2, x: 32}
|
60
|
+
- {_id: 3, x: 33}
|
61
|
+
-
|
62
|
+
description: "FindOneAndReplace when one document matches returning the document after modification"
|
63
|
+
operation:
|
64
|
+
name: findOneAndReplace
|
65
|
+
arguments:
|
66
|
+
filter: {_id: 2}
|
67
|
+
replacement: {x: 32}
|
68
|
+
projection: {x: 1, _id: 0}
|
69
|
+
returnDocument: After
|
70
|
+
sort: {x: 1}
|
71
|
+
|
72
|
+
outcome:
|
73
|
+
result: {x: 32}
|
74
|
+
collection:
|
75
|
+
data:
|
76
|
+
- {_id: 1, x: 11}
|
77
|
+
- {_id: 2, x: 32}
|
78
|
+
- {_id: 3, x: 33}
|
79
|
+
-
|
80
|
+
description: "FindOneAndReplace when no documents match returning the document before modification"
|
81
|
+
operation:
|
82
|
+
name: findOneAndReplace
|
83
|
+
arguments:
|
84
|
+
filter: {_id: 4}
|
85
|
+
replacement: {x: 44}
|
86
|
+
projection: {x: 1, _id: 0}
|
87
|
+
sort: {x: 1}
|
88
|
+
|
89
|
+
outcome:
|
90
|
+
result: null
|
91
|
+
collection:
|
92
|
+
data:
|
93
|
+
- {_id: 1, x: 11}
|
94
|
+
- {_id: 2, x: 22}
|
95
|
+
- {_id: 3, x: 33}
|
96
|
+
-
|
97
|
+
description: "FindOneAndReplace when no documents match with upsert returning the document before modification"
|
98
|
+
operation:
|
99
|
+
name: findOneAndReplace
|
100
|
+
arguments:
|
101
|
+
filter: {_id: 4}
|
102
|
+
replacement: {x: 44}
|
103
|
+
projection: {x: 1, _id: 0}
|
104
|
+
sort: {x: 1}
|
105
|
+
upsert: true
|
106
|
+
|
107
|
+
outcome:
|
108
|
+
result: null
|
109
|
+
collection:
|
110
|
+
data:
|
111
|
+
- {_id: 1, x: 11}
|
112
|
+
- {_id: 2, x: 22}
|
113
|
+
- {_id: 3, x: 33}
|
114
|
+
- {_id: 4, x: 44}
|
115
|
+
-
|
116
|
+
description: "FindOneAndReplace when no documents match returning the document after modification"
|
117
|
+
operation:
|
118
|
+
name: findOneAndReplace
|
119
|
+
arguments:
|
120
|
+
filter: {_id: 4}
|
121
|
+
replacement: {x: 44}
|
122
|
+
projection: {x: 1, _id: 0}
|
123
|
+
returnDocument: After
|
124
|
+
sort: {x: 1}
|
125
|
+
|
126
|
+
outcome:
|
127
|
+
result: null
|
128
|
+
collection:
|
129
|
+
data:
|
130
|
+
- {_id: 1, x: 11}
|
131
|
+
- {_id: 2, x: 22}
|
132
|
+
- {_id: 3, x: 33}
|
133
|
+
-
|
134
|
+
description: "FindOneAndReplace when no documents match with upsert returning the document after modification"
|
135
|
+
operation:
|
136
|
+
name: findOneAndReplace
|
137
|
+
arguments:
|
138
|
+
filter: {_id: 4}
|
139
|
+
replacement: {x: 44}
|
140
|
+
projection: {x: 1, _id: 0}
|
141
|
+
returnDocument: After
|
142
|
+
sort: {x: 1}
|
143
|
+
upsert: true
|
144
|
+
|
145
|
+
outcome:
|
146
|
+
result: {x: 44}
|
147
|
+
collection:
|
148
|
+
data:
|
149
|
+
- {_id: 1, x: 11}
|
150
|
+
- {_id: 2, x: 22}
|
151
|
+
- {_id: 3, x: 33}
|
152
|
+
- {_id: 4, x: 44}
|
153
|
+
|
@@ -0,0 +1,161 @@
|
|
1
|
+
data:
|
2
|
+
- {_id: 1, x: 11}
|
3
|
+
- {_id: 2, x: 22}
|
4
|
+
- {_id: 3, x: 33}
|
5
|
+
|
6
|
+
tests:
|
7
|
+
-
|
8
|
+
description: "FindOneAndUpdate when many documents match returning the document before modification"
|
9
|
+
operation:
|
10
|
+
name: findOneAndUpdate
|
11
|
+
arguments:
|
12
|
+
filter:
|
13
|
+
_id: {$gt: 1}
|
14
|
+
update:
|
15
|
+
$inc: {x: 1}
|
16
|
+
projection: {x: 1, _id: 0}
|
17
|
+
sort: {x: 1}
|
18
|
+
|
19
|
+
outcome:
|
20
|
+
result: {x: 22}
|
21
|
+
collection:
|
22
|
+
data:
|
23
|
+
- {_id: 1, x: 11}
|
24
|
+
- {_id: 2, x: 23}
|
25
|
+
- {_id: 3, x: 33}
|
26
|
+
-
|
27
|
+
description: "FindOneAndUpdate when many documents match returning the document after modification"
|
28
|
+
operation:
|
29
|
+
name: findOneAndUpdate
|
30
|
+
arguments:
|
31
|
+
filter:
|
32
|
+
_id: {$gt: 1}
|
33
|
+
update:
|
34
|
+
$inc: {x: 1}
|
35
|
+
projection: {x: 1, _id: 0}
|
36
|
+
returnDocument: After
|
37
|
+
sort: {x: 1}
|
38
|
+
|
39
|
+
outcome:
|
40
|
+
result: {x: 23}
|
41
|
+
collection:
|
42
|
+
data:
|
43
|
+
- {_id: 1, x: 11}
|
44
|
+
- {_id: 2, x: 23}
|
45
|
+
- {_id: 3, x: 33}
|
46
|
+
-
|
47
|
+
description: "FindOneAndUpdate when one document matches returning the document before modification"
|
48
|
+
operation:
|
49
|
+
name: findOneAndUpdate
|
50
|
+
arguments:
|
51
|
+
filter: {_id: 2}
|
52
|
+
update:
|
53
|
+
$inc: {x: 1}
|
54
|
+
projection: {x: 1, _id: 0}
|
55
|
+
sort: {x: 1}
|
56
|
+
|
57
|
+
outcome:
|
58
|
+
result: {x: 22}
|
59
|
+
collection:
|
60
|
+
data:
|
61
|
+
- {_id: 1, x: 11}
|
62
|
+
- {_id: 2, x: 23}
|
63
|
+
- {_id: 3, x: 33}
|
64
|
+
-
|
65
|
+
description: "FindOneAndUpdate when one document matches returning the document after modification"
|
66
|
+
operation:
|
67
|
+
name: findOneAndUpdate
|
68
|
+
arguments:
|
69
|
+
filter: {_id: 2}
|
70
|
+
update:
|
71
|
+
$inc: {x: 1}
|
72
|
+
projection: {x: 1, _id: 0}
|
73
|
+
returnDocument: After
|
74
|
+
sort: {x: 1}
|
75
|
+
|
76
|
+
outcome:
|
77
|
+
result: {x: 23}
|
78
|
+
collection:
|
79
|
+
data:
|
80
|
+
- {_id: 1, x: 11}
|
81
|
+
- {_id: 2, x: 23}
|
82
|
+
- {_id: 3, x: 33}
|
83
|
+
-
|
84
|
+
description: "FindOneAndUpdate when no documents match returning the document before modification"
|
85
|
+
operation:
|
86
|
+
name: findOneAndUpdate
|
87
|
+
arguments:
|
88
|
+
filter: {_id: 4}
|
89
|
+
update:
|
90
|
+
$inc: {x: 1}
|
91
|
+
projection: {x: 1, _id: 0}
|
92
|
+
sort: {x: 1}
|
93
|
+
|
94
|
+
outcome:
|
95
|
+
result: null
|
96
|
+
collection:
|
97
|
+
data:
|
98
|
+
- {_id: 1, x: 11}
|
99
|
+
- {_id: 2, x: 22}
|
100
|
+
- {_id: 3, x: 33}
|
101
|
+
-
|
102
|
+
description: "FindOneAndUpdate when no documents match with upsert returning the document before modification"
|
103
|
+
operation:
|
104
|
+
name: findOneAndUpdate
|
105
|
+
arguments:
|
106
|
+
filter: {_id: 4}
|
107
|
+
update:
|
108
|
+
$inc: {x: 1}
|
109
|
+
projection: {x: 1, _id: 0}
|
110
|
+
sort: {x: 1}
|
111
|
+
upsert: true
|
112
|
+
|
113
|
+
outcome:
|
114
|
+
result: null
|
115
|
+
collection:
|
116
|
+
data:
|
117
|
+
- {_id: 1, x: 11}
|
118
|
+
- {_id: 2, x: 22}
|
119
|
+
- {_id: 3, x: 33}
|
120
|
+
- {_id: 4, x: 1}
|
121
|
+
-
|
122
|
+
description: "FindOneAndUpdate when no documents match returning the document after modification"
|
123
|
+
operation:
|
124
|
+
name: findOneAndUpdate
|
125
|
+
arguments:
|
126
|
+
filter: {_id: 4}
|
127
|
+
update:
|
128
|
+
$inc: {x: 1}
|
129
|
+
projection: {x: 1, _id: 0}
|
130
|
+
returnDocument: After
|
131
|
+
sort: {x: 1}
|
132
|
+
|
133
|
+
outcome:
|
134
|
+
result: null
|
135
|
+
collection:
|
136
|
+
data:
|
137
|
+
- {_id: 1, x: 11}
|
138
|
+
- {_id: 2, x: 22}
|
139
|
+
- {_id: 3, x: 33}
|
140
|
+
-
|
141
|
+
description: "FindOneAndUpdate when no documents match with upsert returning the document after modification"
|
142
|
+
operation:
|
143
|
+
name: findOneAndUpdate
|
144
|
+
arguments:
|
145
|
+
filter: {_id: 4}
|
146
|
+
update:
|
147
|
+
$inc: {x: 1}
|
148
|
+
projection: {x: 1, _id: 0}
|
149
|
+
returnDocument: After
|
150
|
+
sort: {x: 1}
|
151
|
+
upsert: true
|
152
|
+
|
153
|
+
outcome:
|
154
|
+
result: {x: 1}
|
155
|
+
collection:
|
156
|
+
data:
|
157
|
+
- {_id: 1, x: 11}
|
158
|
+
- {_id: 2, x: 22}
|
159
|
+
- {_id: 3, x: 33}
|
160
|
+
- {_id: 4, x: 1}
|
161
|
+
|
@@ -0,0 +1,24 @@
|
|
1
|
+
data:
|
2
|
+
- {_id: 1, x: 11}
|
3
|
+
|
4
|
+
tests:
|
5
|
+
-
|
6
|
+
description: "InsertMany with non-existing documents"
|
7
|
+
operation:
|
8
|
+
name: "insertMany"
|
9
|
+
arguments:
|
10
|
+
documents:
|
11
|
+
- {_id: 2, x: 22}
|
12
|
+
- {_id: 3, x: 33}
|
13
|
+
|
14
|
+
outcome:
|
15
|
+
result:
|
16
|
+
insertedIds:
|
17
|
+
- 2
|
18
|
+
- 3
|
19
|
+
collection:
|
20
|
+
data:
|
21
|
+
- {_id: 1, x: 11}
|
22
|
+
- {_id: 2, x: 22}
|
23
|
+
- {_id: 3, x: 33}
|
24
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
data:
|
2
|
+
- {_id: 1, x: 11}
|
3
|
+
|
4
|
+
tests:
|
5
|
+
-
|
6
|
+
description: "InsertOne with a non-existing document"
|
7
|
+
operation:
|
8
|
+
name: "insertOne"
|
9
|
+
arguments:
|
10
|
+
document: {_id: 2, x: 22}
|
11
|
+
|
12
|
+
outcome:
|
13
|
+
result:
|
14
|
+
insertedId: 2
|
15
|
+
collection:
|
16
|
+
data:
|
17
|
+
- {_id: 1, x: 11}
|
18
|
+
- {_id: 2, x: 22}
|
19
|
+
|
@@ -0,0 +1,96 @@
|
|
1
|
+
data:
|
2
|
+
- {_id: 1, x: 11}
|
3
|
+
- {_id: 2, x: 22}
|
4
|
+
- {_id: 3, x: 33}
|
5
|
+
|
6
|
+
tests:
|
7
|
+
-
|
8
|
+
description: "ReplaceOne when many documents match"
|
9
|
+
operation:
|
10
|
+
name: "replaceOne"
|
11
|
+
arguments:
|
12
|
+
filter:
|
13
|
+
_id: {$gt: 1}
|
14
|
+
replacement: {x: 111}
|
15
|
+
|
16
|
+
outcome:
|
17
|
+
result:
|
18
|
+
matchedCount: 1
|
19
|
+
modifiedCount: 1
|
20
|
+
# can't verify collection because we don't have a way
|
21
|
+
# of knowing which document gets updated.
|
22
|
+
-
|
23
|
+
description: "ReplaceOne when one document matches"
|
24
|
+
operation:
|
25
|
+
name: "replaceOne"
|
26
|
+
arguments:
|
27
|
+
filter: {_id: 1}
|
28
|
+
replacement: {_id: 1, x: 111}
|
29
|
+
|
30
|
+
outcome:
|
31
|
+
result:
|
32
|
+
matchedCount: 1
|
33
|
+
modifiedCount: 1
|
34
|
+
collection:
|
35
|
+
data:
|
36
|
+
- {_id: 1, x: 111}
|
37
|
+
- {_id: 2, x: 22}
|
38
|
+
- {_id: 3, x: 33}
|
39
|
+
-
|
40
|
+
description: "ReplaceOne when no documents match"
|
41
|
+
operation:
|
42
|
+
name: "replaceOne"
|
43
|
+
arguments:
|
44
|
+
filter: {_id: 4}
|
45
|
+
replacement: {_id: 4, x: 1}
|
46
|
+
|
47
|
+
outcome:
|
48
|
+
result:
|
49
|
+
matchedCount: 0
|
50
|
+
modifiedCount: 0
|
51
|
+
collection:
|
52
|
+
data:
|
53
|
+
- {_id: 1, x: 11}
|
54
|
+
- {_id: 2, x: 22}
|
55
|
+
- {_id: 3, x: 33}
|
56
|
+
-
|
57
|
+
description: "ReplaceOne with upsert when no documents match without an id specified"
|
58
|
+
operation:
|
59
|
+
name: "replaceOne"
|
60
|
+
arguments:
|
61
|
+
filter: {_id: 4}
|
62
|
+
replacement: {x: 1}
|
63
|
+
upsert: true
|
64
|
+
|
65
|
+
outcome:
|
66
|
+
result:
|
67
|
+
matchedCount: 0
|
68
|
+
modifiedCount: 0
|
69
|
+
upsertedId: 4
|
70
|
+
collection:
|
71
|
+
data:
|
72
|
+
- {_id: 1, x: 11}
|
73
|
+
- {_id: 2, x: 22}
|
74
|
+
- {_id: 3, x: 33}
|
75
|
+
- {_id: 4, x: 1}
|
76
|
+
-
|
77
|
+
description: "ReplaceOne with upsert when no documents match with an id specified"
|
78
|
+
operation:
|
79
|
+
name: "replaceOne"
|
80
|
+
arguments:
|
81
|
+
filter: {_id: 4}
|
82
|
+
replacement: {_id: 4, x: 1}
|
83
|
+
upsert: true
|
84
|
+
|
85
|
+
outcome:
|
86
|
+
result:
|
87
|
+
matchedCount: 0
|
88
|
+
modifiedCount: 0
|
89
|
+
upsertedId: 4
|
90
|
+
collection:
|
91
|
+
data:
|
92
|
+
- {_id: 1, x: 11}
|
93
|
+
- {_id: 2, x: 22}
|
94
|
+
- {_id: 3, x: 33}
|
95
|
+
- {_id: 4, x: 1}
|
96
|
+
|