【问题标题】:Update field instead of add to a field pymongo更新字段而不是添加到字段 pymongo
【发布时间】:2020-08-06 08:16:15
【问题描述】:

每当我尝试更新一个字段时,它最终都会将数字添加到该字段而不是替换它。例如:

db.test.update_one({"_id": 0}, {'$inc': {"time": 2}})

如果现场时间已经有 1,现场时间将更新为 3 而不是 2。有人可以帮忙吗?

【问题讨论】:

  • 我试过了,但它仍然只是添加到字段中。
  • max meinz : 你可能遗漏了一些东西,$set 将覆盖现有值不会增加它!
  • 输入值的类型无关紧要..
  • post = {"coins":1} collection.update_one({'_id':1}, {"$set": post}, upsert=False) 不起作用。

标签: python database mongodb pymongo


【解决方案1】:
import pymongo
client = pymongo.MongoClient()
collection = client.testdb.test

print(collection.find_one())    # 'time': 1

collection.update_one( { '_id': 0 }, { '$set': { 'time': 3 } } )
print(collection.find_one())    #  'time': 4

collection.update_one( { '_id': 0 }, { '$inc': { 'time': 1 } } )
print(collection.find_one())    #  'time': 5

MongoDB 文档数据可以使用update_one 方法更新。您可以为不同的更新操作使用不同的update operators,例如$set$inc$unset等。

  • $inc 将字段的值增加指定的数量。
  • $set 设置文档中某个字段的值。

在您的情况下,您可以使用上述两个运算符中的任何一个。请注意,$inc 只能用于带有数字的字段。

【讨论】:

    猜你喜欢
    • 2019-01-28
    • 2014-09-29
    • 2018-08-26
    • 1970-01-01
    • 2014-02-22
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多