2013-04-18 1 views
0

У меня есть документ, который имеет свойство массива, который содержит идентификаторы документов, хранящихся в другой коллекции, как показано ниже:Запрос документов с массивами в MongoDB

movie: { title: 'A title', genres: ['id_1', 'id_2', 'id_3', 'id_4' ] }

Теперь я хочу, чтобы вытащить все соответствующие жанры с один запрос для указанного фильма. Это возможно с драйвером MongoDB для C# с использованием Query.All()?

ответ

0

Поскольку mongoDB не поддерживает соединения, нет возможности, чтобы драйверы C# помогли вам. (https://groups.google.com/forum/?fromgroups=#!topic/mongodb-user/Uuqikhcxp4o). Если вы присоединитесь на стороне клиента, это будет очень медленно. Попытайтесь изменить структуру документа и, если возможно, использовать под-документ жанров, чтобы воспользоваться преимуществами mongoDB. Одно из предложений, которое я могу дать, если у вас есть большинство мест, где вы показываете небольшую информацию о жанрах, с Id хранить дополнительную информацию, но не все, так что пока вы показываете для фильма, вы можете просто выбрать документ и показать его легко и дать ссылку в случае, если они хотят больше. Подробнее о SO: MongoDB and "joins"

 movie: { title: 'A title', genres: [{Id : 'id_1' , "Name" : "Classic"}, {Id :'id_2' , "Name" : "Romantic"} ] } 
+0

Это то, что мы делаем прямо сейчас, но мне просто интересно, был ли лучший способ. Спасибо, @Devesh. –