У меня есть документы в моей коллекции «события», которые построены подобным образом:Поиск через документ внутри плохой практики документа?
{
eventname: "blah",
invitees: [
{
inviteid: 1,
userid: 34234
},
{
inviteid: 2,
userid: 5232
}]
}
Если бы я хотел, чтобы все события, которые пользователь: «34234» был приглашен, было бы в эффективный поиск по каждому invitees
массив в каждом документе события? похоже, больше убивает. Я понимаю, что это было бы здорово для реляционных баз данных, но можно ли это сделать хорошо в mongodb?
UPDATE:
Я закончил с использованием этого, и она работала, но до сих пор не знаю, если это отличный способ сделать это: _Events.Collection.FindAll().Where(x => x.Invitees.Any(y => y.UserId == userId)).ToList();
Спасибо за ответ, мне было интересно, как я бы тогда вернуться мои результаты в этом случае? 'makeIndex' - это метод void, и я не совсем понимаю, как это применимо в моей ситуации, чтобы возвращать список событий. – anthonypliu
« makeIndex() »создает только индекс, чтобы перечислить документ, используйте:« db.events ». find ({"invitees.userid": 34234}) ', чтобы извлечь только приглашение:' db.events.find ({"invitees.userid": 34234}, {"invitees.inviteid": 1}) ' –
ok поэтому после создания индекса, как вы запрашиваете его? – anthonypliu