Mongodb CosmosDB-无效的BSON字段名';地点.$id';

Mongodb CosmosDB-无效的BSON字段名';地点.$id';,mongodb,azure,azure-cosmosdb,Mongodb,Azure,Azure Cosmosdb,我在MongoDB文档模型上使用AzureCosmodb,在使用 看看这个脚本示例: 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":

我在MongoDB文档模型上使用AzureCosmodb,在使用

看看这个脚本示例:

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
如果有人知道发生了什么事,我真的很感激。

你应该换一个

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


事实上,我使用spring数据插入这些数据,我无法更改数据在文档中的存储方式。因此,更改$id不是一个选项。更改文档架构的方式不是一个选项。这只是一个样本。将查询更改为更新为非DBREF字段没问题,但不能解决我的问题。不要使用DBREF。你真的不应该在任何地方使用它,而且它显然不受CosmosDB的支持。我个人对DBRef存储没有发布弃用通知感到惊讶(实际上很震惊)。几乎没有任何东西支持它,而这一开始是个坏主意。使用标准
ObjectId
值和检索相关数据。也尝试在没有相关数据的情况下建模。或者使用RDBMS。
"places_id": original_id,