【问题标题】:Azure CosmoDB - MongoDb - C# - how to increment a value inside an array of Object?Azure Cosmos DB - MongoDb - C# - 如何增加对象数组中的值?
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-04-10
      • 1970-01-01
      • 2020-05-20
      • 1970-01-01
      • 2019-04-30
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多