| Steps To Reproduce: |
>db.tests.find().pretty()
|
{
|
"_id" : ObjectId("5b487b56f00b9013cff5a4dd"),
|
"txid" : 0,
|
"input" : [
|
{
|
"_id" : ObjectId("5b487b56f00b9013cff5a4de"),
|
"pid" : 0,
|
"value" : 42
|
}
|
],
|
"output" : [
|
{
|
"_id" : ObjectId("5b487b56f00b9013cff5a4e2"),
|
"value" : 123,
|
"n" : 0
|
},
|
{
|
"_id" : ObjectId("5b487b56f00b9013cff5a4e1"),
|
"value" : 345,
|
"n" : 1
|
},
|
{
|
"_id" : ObjectId("5b487b56f00b9013cff5a4e0"),
|
"value" : 567,
|
"n" : 2
|
},
|
{
|
"_id" : ObjectId("5b487b56f00b9013cff5a4df"),
|
"value" : 789,
|
"n" : 3
|
}
|
],
|
"__v" : 0
|
}
|
>var cond = {txid: 0}
|
>var update = { $set: { ['output.0.value']: 777 } };
|
>var opts = { projection: { _id: 0, output: { $slice: [0,1] } }, returnNewDocument: true };
|
>db.tests.findOneAndUpdate(cond, update, opts);
|
{
|
"txid" : 0,
|
"input" : [
|
{
|
"_id" : ObjectId("5b487b56f00b9013cff5a4de"),
|
"pid" : 0,
|
"value" : 42
|
}
|
],
|
"output" : [
|
{
|
"_id" : ObjectId("5b487b56f00b9013cff5a4e2"),
|
"value" : 777,
|
"n" : 0
|
}
|
],
|
"__v" : 0
|
}
|
>var update = { $set: { ['output.0.value']: 123 } };
|
>var opts = { projection: { _id: 0, output: { $elemMatch: { n: 0 } } }, returnNewDocument: true };
|
>db.tests.findOneAndUpdate(cond, update, opts);
|
{
|
"output" : [
|
{
|
"_id" : ObjectId("5b487b56f00b9013cff5a4e2"),
|
"value" : 123,
|
"n" : 0
|
}
|
]
|
}
|
>
|
|