Mongodb PyMongo-查找包含唯一键的文档并删除该键及其内容

Mongodb PyMongo-查找包含唯一键的文档并删除该键及其内容,mongodb,pymongo,Mongodb,Pymongo,我有一个包含许多文档的集合,其中一个文档可能包含也可能不包含需要删除的唯一密钥: 例如: DOC-X{ OBJ1{}, OBJ2{ unique12: {}, unique34: {}, unique56: {}, }, OBJ3{} } 在python中,如何从名为DOC-X的文档中的OBJ2中仅删除unique34? 不知道该对象是否存在,但如果存在,则需要将其删除。 这是对象中的对象,而不是数组 我试过:

我有一个包含许多文档的集合,其中一个文档可能包含也可能不包含需要删除的唯一密钥:

例如:

DOC-X{
    OBJ1{},
    OBJ2{
        unique12: {},
        unique34: {},
        unique56: {},
    },
    OBJ3{}
}
在python中,如何从名为DOC-X的文档中的OBJ2中仅删除unique34? 不知道该对象是否存在,但如果存在,则需要将其删除。 这是对象中的对象,而不是数组

我试过:

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

您可以使用

尝试:

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')}
你可以使用

尝试:

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')}