我开始使用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设计方法?如果没有,有人能告诉我什么是符合设计理念的东西吗?
答案 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);