1 回答

TA貢獻2003條經驗 獲得超2個贊
它不適用于乘法的原因是它與位置運算符'-1'
相同。在“嵌套數組”主題下的官方文檔中,我們可以看到以下內容: $
位置 $ 運算符不能用于遍歷多個數組的查詢,例如遍歷嵌套在其他數組中的數組的查詢,因為 $ 占位符的替換是單個值
從MongoDb 3.6 開始,有允許使用嵌套數組的新功能。
過濾位置運算符
$[<identifier>]
標識與更新操作的 arrayFilters 條件匹配的數組元素
因此,使用過濾后的位置運算符,我的代碼現在看起來像這樣:
await coll.UpdateOneAsync(x => x.StoreGuid == storeGuid,
Builders<StoreModel>.Update.Set("configGroup.$[g].config.$[c].value", model.Value),
new UpdateOptions
{
ArrayFilters = new List<ArrayFilterDefinition>
{
new BsonDocumentArrayFilterDefinition<BsonDocument>(new BsonDocument("g.groupName", groupName)),
new BsonDocumentArrayFilterDefinition<BsonDocument>(new BsonDocument("c.key", model.Key))
}
});
- 1 回答
- 0 關注
- 242 瀏覽
添加回答
舉報