C# 解析大型MongoDB文档上的手动引用

C# 解析大型MongoDB文档上的手动引用,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,解决大型(数百万条记录)mongodb文档中的手动引用的最佳策略是什么 我有一个大部分是非规范化的文档,但包含一些使用手动引用的规范化字段,例如在本例中: db.test.insert({ _id: ObjectId('5447e59575a404a81e34df01'), name: 'Hockey', teamSport: true }) db.test.insert({ _id: ObjectId('5446648ea1851287e7090c25'), name: 'Reading' }

解决大型(数百万条记录)mongodb文档中的手动引用的最佳策略是什么

我有一个大部分是非规范化的文档,但包含一些使用手动引用的规范化字段,例如在本例中:

db.test.insert({ _id: ObjectId('5447e59575a404a81e34df01'), name: 'Hockey', teamSport: true })
db.test.insert({ _id: ObjectId('5446648ea1851287e7090c25'), name: 'Reading' })
db.test.insert({ _id: ObjectId('5447e59575a404a81e34df0a'), name: 'Taxidermy' })

db.test.insert({ _id: ObjectId('5447e59575a404a81e34df02'), name: 'Alfred', hobbies: [ObjectId('5447e59575a404a81e34df01'), ObjectId('5446648ea1851287e7090c25')] })
db.test.insert({ _id: ObjectId('5447e59575a404a81e34df07'), name: 'Boris', hobbies: [ObjectId('5446648ea1851287e7090c25')] })
db.test.insert({ _id: ObjectId('5447e5b175a404a81e34fa66'), name: 'Cheng', hobbies: [ObjectId('5446648ea1851287e7090c25'), ObjectId('5447e59575a404a81e34df0a')] })
考虑到以上数据,我想搜索那些进行团队运动的人,结果应该是“阿尔弗雷德”

我正在考虑创建“临时”表来存储给定查询的每个中间步骤的结果投影(在本例中,teamSport为true的记录的objectid),作为缓存它们的表单


使用Mongo运算符或C#驱动程序,有没有更好的方法来解析大型文档中的手动引用?

中间结果有多大?您可以在查询中使用大的
$in,只要
中的
$in值的数量是数千,而不是几万或几十万,就可以使用适当的索引。根据这些查询对用例的重要性,可以考虑不同的数据模型。@ WdBelkely中间结果是数千级。在进一步非规范化我的模型时,我遇到的问题是,由于“重复”的嵌入文档的数量,更新将变得昂贵。