从 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]
我正在尝试从 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]