Документ:
{
"array1" : [
{
"array2" : [
{
"c" : 3.0,
"d" : 3.0
},
{
"c" : 4.0,
"d" : 4.0
}
]
},
{
"array2" : [
{
"c" : 5.0,
"d" : 5.0
},
{
"c" : 6.0,
"d" : 6.0
}
]
}
]
}
Затем я запускаю следующее в оболочке Mongo:
db.collection.findOneAndUpdate({
"array1.array2": {
"$elemMatch": {
"c": 3
}
}
},
{
"$set": {
"array1.array2.$.c": 1,
}
})
, что приводит к ошибке:
pymongo.errors.OperationFailure: нельзя использовать часть (array1 из array1.array2.0.c) для прохождения элемента ({array1: [{array2: [{c: 3.0, d: 3.0}, {c: 4.0, d: 4.0}]}, {array2: [{c: 5.0, d: 5.0}, {c: 6.0, d: 6.0}]}]})
Как я могу elemMatch для элемента вложенного массиваи почему эта нотация не работает (хотя в соответствии с принятым здесь ответом Как использовать elemMatch для сопоставления с вложенным массивом )?