【发布时间】:2020-02-17 10:51:52
【问题描述】:
我在数据库中有这个实体
{
"_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 应该可以解决问题,但我收到错误 位置运算符没有从查询中找到所需的匹配项。
【问题讨论】: