我在数据库中有这个实体
{
"_id" : ObjectId("XXX"),
"Bets" : [
{
"IsPublic" : false
},
{
"IsPublic" : false
}
]
}
我希望更新嵌套文档中的所有字段IsPublic。我有这个查询,它完美地起作用:
db.getCollection('bets').update({"_id": ObjectId("XXX")}, {$set : { "Bets.$[].IsPublic" : true }})
我希望用C#驱动程序编写与此相同的查询,我更喜欢强类型查询,就像这样:
var filter = Builders<TrackerBet>.Filter.Eq(b => b.Id, "XXX");
var update = Builders<TrackerBet>.Update.Set(b => b.Bets[-1].IsPublic, true);
var result = mongoDb.Bets.UpdateOneAsync(filter, update).Result;
但是它不起作用。如果我放弃强类型查询,它就可以工作:
var update = Builders<TrackerBet>.Update.Set("Bets.$[].IsPublic", true);
如何实现强类型查询?我以为 b.Bets[-1].IsPublic 可以解决问题,但是出现了错误 The positional operator did not find the match needed from the query。