我为我的db建立了这个架构:
{
"_id" : "test_schema",
"t" : 5,
"p" : [
{
"id" : "207",
"v" : 4
},
{
"id" : "309",
"v" : 1
}
....
]
}
我正在尝试 $ inc p.id的 v 值等于“207”。 我目前能够使用以下代码包含 t 值:
var result = collection.UpdateOneAsync(new BsonDocument("_id", "test_schema"}), new BsonDocument("$inc", new BsonDocument("t", 4)), new UpdateOptions() { IsUpsert = true }).Result;
但是当我尝试更新数组上的值时,没有任何事情发生(甚至没有错误!):
var result = collection.UpdateOneAsync(new BsonDocument(new Dictionary<string, object>() { { "_id", "test_schema" }, { "p.id", "207" } }), new BsonDocument("$inc", new BsonDocument("p.v", 4)), new UpdateOptions() { IsUpsert = true }).Result;
根据MongoDB文档,我注意到“p.v”,4应为“p。$。v”,但在cosmodb中引发无效的$符号异常。
有什么建议吗?
答案 0 :(得分:1)
Cosmos DB还不支持位置运营商,它在路线图上。提交反馈项https://feedback.azure.com/forums/599059-azure-cosmos-db-mongodb-api/suggestions/20091454-positional-array-update-via-query-support以跟踪对此功能的兴趣。如果您需要此支持,请在那里投票。