【问题标题】:MongoDB "The dollar ($) prefixed field is not valid for storage."MongoDB“美元 ($) 前缀字段对存储无效。”
【发布时间】:2022-01-11 13:07:22
【问题描述】:

在存储带有 Dollar($) 前缀键的键时会抛出错误,因为“美元 ($) 前缀字段对存储无效。”在 MongoDB 中。

我正在使用 MongoDB 4.2 版和 NodeJS MongonDB 驱动程序 3.5.9。

示例代码段

db.collection.updateOne({_id: 'ObjectId("618bb1ccd7b16e4232dcb4e8")'}, {$set: {'$name': 'Alex'}}, {upsert: true, checkKeys: false})

【问题讨论】:

    标签: node.js mongodb


    【解决方案1】:

    mongodb 4.0 不支持带美元符号的顶级字段。您可以升级到 mongodb 5.0

    https://docs.mongodb.com/v4.0/core/document/#field-names

    【讨论】:

      【解决方案2】:

      如果对象在任何地方都有$,也许可以在 mongodb 文件资源管理器中检查?

      【讨论】:

      • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
      • 没听懂
      【解决方案3】:

      你只是有一个语法错误,来自更新docs,更新文档

      仅包含更新运算符表达式。

      在您的情况下,您想使用$set,如下所示:

      db.collection.updateOne(
        {_id: 'ObjectId("618bb1ccd7b16e4232dcb4e8")'},
        { $set: { name: 'Alex'} },
        {upsert: true, checkKeys: false}
      )
      

      【讨论】:

      • 我已经在使用$set了,只是描述中没有提到。我已经更新了描述。
      • 所以不要用“$name”写“name”?
      • 这些键是即时出现的。我无法控制。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-28
      • 2017-12-13
      • 2019-12-27
      • 2023-03-27
      • 2020-05-24
      相关资源
      最近更新 更多