从 BsonDocument 中的列表中获取特定项目

Getting a specific item from a list in BsonDocument

我正在尝试从 BsonDocument 中带有 Where() 的列表中获取项目以形成查询。 Participants 是 List<User> 我想从中获取特定参与者的地方。 Components 是一个 List<BsonDocument>,这使得使用 ["key"] 建立索引成为可能,因为对象的属性尚不清楚。

var rec = (await _context.Records
                        .Where(r =>
                        r.Components.Any(c =>
                        c["StartTime"] == record.StartTime &&
                        c["Participants.Number"] == record.Organizer.Number))
                        .GetAsync())
                        .LastOrDefault();

["Participants.Number"] 在列表中工作,但我只想检查列表中的特定(第二)参与者,我尝试了以下操作:

p["Participants[1].Number"]

p["Participants"][1]["Number"]

我也尝试先转换为 BsonArray 和其他 LINQ 功能,但没有成功找到解决方案。

问题是查询不是 运行 在您的代码中,它被传递到底层数据库,与 c# 不同,mongo 不使用方括号表示法进行数组索引与对象符号相同的索引,所以你需要 .1 而不是 [1]