PyMon go - найти документ, содержащий уникальный ключ, и удалить этот ключ и его содержимое. - PullRequest
0 голосов
/ 06 мая 2020

У меня есть коллекция, содержащая множество документов, в которых один может содержать или не содержать уникальный ключ, который необходимо удалить:

Пример:

DOC-X{
    OBJ1{},
    OBJ2{
        unique12: {},
        unique34: {},
        unique56: {},
    },
    OBJ3{}
}

Как бы мне go об удалении только unique34 из OBJ2 в документе с названием DO C -X in python? Неизвестно, существует ли вообще этот объект, но если он существует, его нужно удалить. Это объект внутри объекта, а не массив.

Я пробовал:

    coll = database["COLLECTION"]
    toDelete = "unique34"
    coll.find_one_and_delete({["OBJ2"][toDelete]: 1})

безуспешно.

1 Ответ

2 голосов
/ 06 мая 2020

Вы можете использовать оператор $ unset

Попробуйте:

coll.update_one({}, {"$unset": {"DOC-X.OBJ2.unique34": ""}})

Результаты:

Before
{'DOC-X': {'OBJ1': {},
           'OBJ2': {'unique12': {}, 'unique34': {}, 'unique56': {}},
           'OBJ3': {}},
 '_id': ObjectId('5eb31a54ce9c5701ce4ef7fd')}
After
{'DOC-X': {'OBJ1': {}, 'OBJ2': {'unique12': {}, 'unique56': {}}, 'OBJ3': {}},
 '_id': ObjectId('5eb31a54ce9c5701ce4ef7fd')}
...