解决MongoDB中引用的最佳实践?

时间:2014-03-23 15:32:08

标签: node.js mongodb

我举了一个简单的书籍例子,标有他们的类型:

var db = require('mongojs').connect('mongo-test', ['tags', 'books']);

db.tags.drop();
db.books.drop();

db.tags.insert([{
    _id: 1,
    name: 'Thriller'
}, {
    _id: 2,
    name: 'Romance'
}, {
    _id: 3,
    name: 'Crime'
}, {
    _id: 4,
    name: 'Comedy'
}]);

db.books.insert([{
    title: 'Book 1',
    tags: [1, 3]
}, {
    title: 'Book 2',
    tags: [2]
}, {
    title: 'Book 3',
    tags: [2, 4]
}]);

db.books.find({}, function (error, result)
{
    // how do I resolve the tag-references?
    console.log(result);
});

现在,当我检索书籍时,我还希望拥有完整的标签,而不仅仅是他们的ID。我不想将标签直接放在书籍记录中,因为标签对象会在属性中增长。

解决这类推荐的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

在node.js世界中,通常的做法是使用Mongoose ORM及其对population的支持。

您的查询最终会如下所示:

Book.find({}).populate('tags').exec(function(err, books) {...});