用MongoDB和&amp ;;结构化收藏列表猫鼬?

时间:2016-07-29 22:18:13

标签: node.js mongodb mongoose

我开始使用mongo,我想为用户“喜欢”的项目创建一个模式。我使用mongoose和node.js的当前代码如下所示:

// load the things we need
var mongoose = require('mongoose');

// define the schema for our favourites model
var favouritedItemsSchema = mongoose.Schema({
    userId           : Number,
    item             : [{
        itemId       : Number,
        addedDate    : Date
    }]
});

// create the model for favourites and expose it to our app
module.exports = mongoose.model('Favourites', favouritedItemsSchema);

来自关系数据库背景,我想知道上述方法是否代表一种合适的NoSQL DB设计方法?如果没有,有人能告诉我什么是符合设计理念的东西吗?

1 个答案:

答案 0 :(得分:1)

是的,你是对的,关系和NoSQL设计方法完全不同。

如果你在RDBMS中有10个表,你可以在mongo中只有2个或3个集合。那是因为我们在对象之间创建关系的方式在NoSQL(子文档,数组等等)中更有趣。

以下是您的问题的一种解决方案,重用现有的用户集合。

// load the things we need
var mongoose = require('mongoose');

// define the schema for our model
var userSchema = mongoose.Schema({
    username: string,
    favourites: [{
        id: Schema.Types.ObjectId,
        addedDate: Date
    }]
});

// export model
module.exports = mongoose.model('User', userSchema);