当前位置: 首页 > 知识库问答 >
问题:

CosmosDB-无效的BSON字段名“位置”$身份证

刘子实
2023-03-14

我在MongoDB文档模型上使用Azure CosmoDB,并且在使用DBRefs$id更新一些文档时遇到奇怪的行为

看看这个脚本示例:

original_id = ObjectId()

db.places.insert({
    "_id": original_id,
    "name": "Broadway Center",
    "url": "bc.example.net"
})

db.people.insert({
    "name": "Erin",
    "places":{"$ref":"places","$id": original_id},
    "url":  "bc.example.net/Erin"
})

db.people.find({"places.$id": original_id}) //works like charm
db.people.update({"places.$id": original_id}, {$set:{"NEW_FIELD": false}}, {multi:true}) //doesn't works =/

然后返回:

Failed to execute script.

Error: Error: error: {
    "_t" : "OKMongoResponse",
    "ok" : 0,
    "code" : 2,
    "errmsg" : "Invalid BSON field name 'places.$id'",
    "$err" : "Invalid BSON field name 'places.$id'"
} :
DBCollection.prototype.update@src/mongo/shell/collection.js:589:23
@(shell):1:1

如果有人知道发生了什么,我真的很感激。

共有1个答案

阳昊
2023-03-14

你应该替换

"places":{"$ref":"places","$id": original_id},

"places_id": original_id,
 类似资料:
  • 此例外情况: 由以下代码引发: 注释代码

  • 问题内容: 例外情况: 由以下代码引发: 注释的代码执行正常。 为什么在“ upsert”不正确的情况下插入是正确的? 问题答案: 使用更新运算符更新文档字段。您需要哪个带替换文件。 这里更多 更新操作员:https : //docs.mongodb.com/manual/reference/operator/update- field/ 更新一:https : //docs.mongodb.co

  • 我写的是MVC5,使用的是Identity 2.0。 我在邮件中点击链接,我正在获得密码重置令牌并使用 结果总是false,并表示“无效令牌”。我该在哪里修?

  • BITFIELD_INVALID是我的错误,我无法找到与我的问题相关的修复,只要我运行一个命令,任何命令,只要回复我,也只是我删除nuke时开始出现的一个旁注。js 如果你遇到这种情况,请告诉我,或者如果你有答案,我需要键入mroe,这样就没有必要了!!!,,,, 这儿呢 const{owner}=require(“../config”);

  • 最近,当我试图用Firebase匿名登录时,我得到以下错误 {“错误”:{“代码”:400,“消息”:“admin_only_operation”,“错误”:[{“消息”:“admin_only_operation”,“域”:“全局”,“原因”:“无效”}]}} 检查JSON消息是否正确格式化并包含有效字段(例如,确保传入正确的数据类型)。 我正在使用API提供的函数,所以我不知道我怎么可能实现错

  • 我正在探索Azure的cosmos mongodb,我成功地创建了所有模式和种子数据。但当我试图对数据库运行测试时,它会在Collections()中抛出“Invalid BSON Field name'Forms.$.Amt'”。UpdateOne(),它应该更新表单数组中与id匹配的Amt字段。这适用于我在mongodb 3.2.8上运行的本地应用程序,我的应用程序使用的是mongodb C#