首页 > 解决方案 > pymongo中的Update_one具有不同的字段类型

问题描述

在 mongoDB 集合中,我有不同的字段类型。是否可以使用 update_one 方法更新此集合中的文档?

doc = {"upd_time": datetime.datetime.now(), "categories": [1,2,3]}
mng_collection.update_one({"_id": id}, {"$set": doc}, upsert=True)

该代码替换类别字段中的现有数组,但如果集合 doc 数组中不存在,我需要从 doc["categories"] 数组中添加值。

标签: mongodbpymongo

解决方案


您需要使用$pushwith$each将元素添加到现有数组。$set将始终用新值替换现有值。

你可以试试这个:

doc = {"upd_time": datetime.datetime.now(), "categories": [1,2,3]}
mng_collection.update_one({"_id": id}, {
    "$set": { "doc.upd_time" : doc.upd_time},
    $push : {categories : {$each : doc.categories}}
}, upsert=True)

在此处阅读有关$push 文档以及如何将其与 $each 一起使用的更多信息。


推荐阅读