我有这样的模型:
{
"_id":"5b90eea8c02e062be2888446",
"storeGuid":"e97d4730-9b8a-49ed-be87-caf4054439aa",
"storeId":"0",
"storeDbName":"0",
"tenant":"dev",
"configGroup":[
{
"groupName":"peopleCounter",
"config":[
{
"key":"averageWaitPeriodTime",
"value":"60",
}
]
},
{
"groupName":"sessionMonitor",
"config":[
{
"key":"testKey1",
"value":"987",
},
{
"key":"testKey2",
"value":"123",
}
]
}
]
}
我正在尝试value更新"key":"testKey2"
我有这样的更新声明:
await coll.UpdateOneAsync(
x => x.StoreGuid == storeGuid
&& x.ConfigGroup.Any(y => y.GroupName == groupName
&& y.Config.Any(z => z.Key == model.Key)),
Builders<StoreModel>.Update.Set(x => x.ConfigGroup[-1].Config[-1].Value, model.Value));
例如,当我尝试groupName使用此类过滤器进行更新时,ConfigGroup[-1]它可以工作。
但是在我们拥有ConfigGroup[-1].Config[-1]
它的情况下它不起作用。
我知道如何更新值的两个选项:
只需使用更新整个列表 ConfigGroup[-1].Config
或为过滤器指定具体索引,例如 ConfigGroup[configGroupIndex].Config[configKeyIndex].Value
但我想知道为什么它不适用于-1
索引。以及如何正确地做到这一点。
请使用c# MongoDB.Driver回答。
湖上湖
相关分类