在文档中搜索文档是不好的做法
本文关键字:文档 搜索 | 更新日期: 2023-09-27 18:03:51
我的"events"集合中有一些文档是这样构建的:
{
eventname: "blah",
invitees: [
{
inviteid: 1,
userid: 34234
},
{
inviteid: 2,
userid: 5232
}]
}
如果我想要user: "34234"被邀请参加的所有事件,在每个事件文档中搜索每个invitees
数组是否有效?似乎是过度杀戮。我理解这将是伟大的关系数据库,但这可以在mongodb做得很好吗?
我最终使用了这个,它工作了,但仍然不知道这是否是一个很好的方法:_Events.Collection.FindAll().Where(x => x.Invitees.Any(y => y.UserId == userId)).ToList();
相反,这样的查询将非常适合MongoDB。它允许你应用一个MultiKey索引:一个数据类型为数组的字段的索引。
db.events.ensureIndex( { "invitees.userid" : 1 })
这样,您就不必在每个文档中搜索每个数组
我不确定mongodb,但您可以轻松地使用Linq执行搜索:
var results =
from evt in events
where evt.invitees.Any(x => x.userid == 34234)
select evt;
如果事件的数量相对较少,这将是相当快的。
我不认为这有什么不对,这是文档数据库的好处之一。如果有的话,你应该有一个索引。参考mongodb的索引文档