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 关注
- 210 浏览
添加回答
举报