次のような本やページのマングース モデルがあるとします。
mongoose.model("Book", new Schema({
title: String
});
この
mongoose.model("Page", new Schema({
pageNumber: Number,
_bookId: {type: ObjectId, ref: "Book"}
});
各ページは、それがどの本に属しているかを追跡します。ここで、pageNumber 500 のページを持つ本の配列が必要です。
私は次のことができます:
Page.find({pageNumber: 500})
.populate("_bookId")
.then(function (pages) {
var books = [];
pages.forEach(function (page) {
books.push(page._bookId); // page._bookId now contains a Book document
});
return q(books);
}).then(function (books) {
// Do something with the books
});
それでも、ページをループする部分は面倒なようで、その種の抽出はおそらくmongoで行うことができます. 私の質問は、それがどのように機能するかです。
populate を使用するのが最善の方法ですか? ただし、スキーマはそのままにしておきたいと思います。