PyMongo - 找到一个包含唯一密钥的文档,并删除该密钥及其内容。

问题描述 投票:0回答:1

我有一个包含许多文档的集合,其中一个文档可能包含或不包含需要删除的唯一键。

例如:

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

在python中,我如何从名为DOC-X的文档中的OBJ2中只删除唯一的34?

我已经尝试过。

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

没有成功

mongodb pymongo
1个回答
2
投票

您可以使用 $unset operator

试试吧

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')}
© www.soinside.com 2019 - 2024. All rights reserved.