我的“events”集合中的文档与此类似:
{
eventname: "blah",
invitees: [
{
inviteid: 1,
userid: 34234
},
{
inviteid: 2,
userid: 5232
}]
}
如果我想要邀请用户:“34234”的所有事件,那么搜索每个事件文档中的每个invitees
数组是否有效?好像过度杀人。我知道这对于关系数据库来说会很棒,但是这可以在mongodb中很好地完成吗?
更新:
我最终使用了它,并且它有效,但仍然不知道这是否是一种很好的方式:
_Events.Collection.FindAll().Where(x => x.Invitees.Any(y => y.UserId == userId)).ToList();
答案 0 :(得分:1)
相反,这样的查询很适合MongoDB。 它允许您应用MultiKey索引:数据类型为数组的字段的索引。
db.events.ensureIndex( { "invitees.userid" : 1 })
这样,您不必搜索每个文档中的每个数组
答案 1 :(得分:0)
我不确定mongodb,但您可以使用Linq轻松执行搜索:
var results =
from evt in events
where evt.invitees.Any(x => x.userid == 34234)
select evt;
如果事件数量相对较少,这将非常快。
答案 2 :(得分:0)
我认为它没有任何问题,这是文档数据库的好处之一。如果有的话,你应该有一个索引。请参阅mongodb documentation on indexes。