Я знаю, что это далеко после того, как вы отправите вопрос, но это может помочь другим.
Если вы используете эту ссылку повсюду, вы можете рассмотреть возможность использования встроенного документа. Преимущества внедренного документа в том, что вы получаете его при запросе к родительскому документу, таким образом, он сохраняет ваш дополнительный запрос, а недостатки заключаются в том, что родительский документ может стать большим (или даже очень большим), поэтому вам следует использовать их, но использовать их осторожно.
Вот пример простого встроенного документа. Вместо того, чтобы ссылаться на «комментарии» в почтовом документе, которые требуют дополнительного запроса, мы вставим его (код немного псевдо):
var postSchema = new Schema({
author : {type : String},
title : {type : String, required : true},
content : {type : String, required : true},
comment : {
owner : {type : String},
subject : {type: String, required : true},
content : {type String, required : true}
}
});
MongoDB позволяет вам простой и удобный способ запроса полей комментариев с помощью символа точки. Например, если мы хотим запрашивать только комментарии, тема которых начинается с 'car', мы делаем следующее:
myPostModel.find({ 'comment.subject' : /car*/ }).exec(function(err, result){
Do some stuff with the result...
});
Обратите внимание, что для простоты примера поле комментария в записи не является массивом (в этом примере допускается один комментарий к записи). Однако даже если это будет массив, монго очень элегантно ссылаются на элементы массива.