Pymongo: find_one_and_update 或 update_one 基于 "custom" _id 对象。

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

这就是一个文档的样子,我不能用 "id_"来找到正确的文档,我必须用 "date"、"caseid "和 "sector "的组合。

  {
        "_id" : ObjectId("5ebe67974bfaadfe0ec3ed10"),
        "date" : 20180101,
        "likelybuy" : 1000614,
        "bixdemo_alter" : 2,
        "bixdemo_bundesland" : 10,
        "caseid" : 653433802,
        "bixdemo_haushalts_nettoeinkommen" : 2.0,
        "bixdemo_geschlecht" : 1,
        "sector" : 1026,
    }

coll.update_one({'_id': id},
        {
            '$set': {
              'sector': 1029,
        }
})

我不能用 "id_"来找到正确的文件,我必须用 "日期","caseid "和 "部门 "的组合。

有什么方法可以做到这一点吗?

mongodb pymongo
1个回答
1
投票

当然,你不一定要用一个 _id 作为过滤器,你可以使用任何字段。只要在过滤器中使用这些字段即可,如

coll.update_one({'date': 20180101, 'caseid': 653433802,'sector': 1026},
        {
            '$set': {
              'sector': 1029,
        }
})

1
投票

你可以直接匹配 id而不是匹配所有其他字段的值。您可以做以下工作。

导入 ObjectId:

from bson.objectid import ObjectId`

做这样的查询。

coll.update_one({'_id': ObjectId(id)},
        {
            '$set': {
              'sector': 1029,
        }
})

我希望这对你有用


0
投票

首先,我认为你试图找到你的id。

coll.update_one({_id:'12314'},{})

但问题是你传递了字符串来搜索对象id,所以,mongodb找不到它。如果你试试下面这个。

coll.update_one({_id:mongoose.Types.ObjectId('12314')},{})

我想这样就可以了 而且你可以在mongodb中使用'$elemMatch'来进行组合搜索。

© www.soinside.com 2019 - 2024. All rights reserved.