【问题标题】:MongoDB 5.0 no longer allows to update an exsisting document with empty oneMongoDB 5.0 不再允许使用空文档更新现有文档
【发布时间】:2021-08-22 18:25:30
【问题描述】:

我正在尝试在 MongoDB v5.0 中进行以下查询 db.test.insertOne({"test":"value"}) db.test.update({"test":"value"},{}) ...这会引发一个错误,说“未捕获的 MongoDriverError:更新文档需要原子操作符”但之前(MongoDB 4.4.2)这曾经通过并且将文档更新为空。为什么不再允许这样做?

我已经检查了下面的这个问题,但是关于 $set、$unset 运算符和上面的查询似乎工作正常。 Why does MongoDB no longer allow using $set and $unset with an empty document? . PSI 图片说明上述问题:- Problem

【问题讨论】:

    标签: mongodb mongodb-query


    【解决方案1】:

    它工作正常,你在测试中犯了一个错误。

    MongoDB Enterprise mongos>  db.test.insertOne({"test":"value"}) 
    {
        "acknowledged" : true,
        "insertedId" : ObjectId("611e6ba92bf1d59775386625")
    }
    MongoDB Enterprise mongos> db.test.update({"test":"value"},{})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    MongoDB Enterprise mongos> db.test.find()
    { "_id" : ObjectId("611e6ba92bf1d59775386625") }
    

    【讨论】:

    • 有趣。您在哪个版本中尝试过此查询。我在 MongoDB Web shell 中再次尝试,但在此链接上再次失败:-docs.mongodb.com/manual/reference/method/db.collection.update ... 在这里,他们提供了一个选项,可以在它自己的网站中尝试更新查询。感谢您的快速回复。
    • 您的问题中缺少 mcve。将其与测试并完成结果的确切版本一起添加。
    • 添加了信息。谢谢顺便说一句
    • 明白了!所以问题出在他们允许我们直接运行 MongoDB v5.0 查询的网站上。我只是通过在 PC 上安装最新版本(MongoDB shell 版本 v5.0.2 ,MongoDB shell 版本 v5.0.2 )来尝试这些查询,它工作正常。
    • @MarkenStyne 所指的问题是 web shell(它是 MongoDB 手册网站 docs.mongodb.com/v5.0/tutorial/update-documents 上的交互式 web shell)。更新失败,如 web shell 中报告的那样(对于 web shell 版本 4.4 和 5.0,但不是 v4.2)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多