【发布时间】:2021-04-27 19:24:47
【问题描述】:
我正在尝试从 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 功能,但没有成功找到解决方案。
【问题讨论】:
-
您使用的是哪个 BsonDocument 框架?蒙哥?
-
是的,我正在使用 MongoDB 驱动程序和
MongoDB.Bson -
您是否尝试过“Participants.1.Number”,因为这是 mongo 在内部引用它的方式
-
我没有,我试试看告诉你
-
我相信它有效!感谢您的帮助,如果我想要列表中的最后一项(列表可以有可变长度),您知道我应该怎么做