Pymongo MongoDB 3.4 - вложенный элементMatch - PullRequest
0 голосов
/ 02 февраля 2019

Документ:

{ 
    "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 для сопоставления с вложенным массивом )?

...