解决大型MongoDB文档的手动引用

时间:2014-10-28 13:28:56

标签: c# mongodb mongodb-.net-driver

在大型(数百万条记录)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的记录的ObjectIds)作为缓存它们的表单。

是否有更好的方法可以通过使用Mongo运算符或使用C#驱动程序来解析大型文档中的手动引用?

0 个答案:

没有答案