【发布时间】:2017-08-21 13:32:52
【问题描述】:
我的数据库有这个架构:
{
"_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 中引发了无效的 $ 符号异常。
有什么建议吗?
【问题讨论】:
标签: mongodb-.net-driver azure-cosmosdb