Azure CosmoDB - MongoDb - C# - 如何在Object数组中增加一个值?

时间:2017-08-21 13:32:52

标签: mongodb-.net-driver azure-cosmosdb

我为我的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中引发无效的$符号异常。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

Cosmos DB还不支持位置运营商,它在路线图上。提交反馈项https://feedback.azure.com/forums/599059-azure-cosmos-db-mongodb-api/suggestions/20091454-positional-array-update-via-query-support以跟踪对此功能的兴趣。如果您需要此支持,请在那里投票。