我正在开发像Tinder这样的应用来试验MongoDB。 我想知道数据库架构。
主要的想法是用户可以“喜欢”许多用户,但无论“喜欢”的个人资料数量增长多少,都不太可能达到16MB的文件大小上限,所以在我的设计中,“喜欢”配置文件嵌入在一个人的个人资料中。
下面的是使用mongoose
的用户架构示例var BlockedSchema = mongoose.Schema({
BlockerUserId: {
type: String,
required: true
},
BlockedUserId: {
type: String,
required: true
}
});
另一方面,用户可能会被我的许多用户“讨厌”。 因此,用户不应该在他的下一个个人资料中查看“不喜欢”他的用户的个人资料,因此在我的设计中我创建了一个集合,其中包含“不喜欢”的用户的ID以及“不喜欢”的用户的ID
下面的是使用mongoose
的阻止模式的示例{{1}}
你认为这是一个好方法吗?以及需要创建哪些索引?
最佳,
答案 0 :(得分:2)
您只能在用户集合中管理不喜欢,不需要新的集合。
var UserSchema = mongoose.Schema({
fullName: {
type: String,
trim: true
},
phone: {
type: String,
trim: true,
required: true,
},
gender: {
type: String,
enum: ['male', 'female'],
},
age: {
type: Number,
required: true
},
favorites: [],
dislike[]
});
并搜索
var current_user_id = userdata._id;
db.users.find({dislike:{$ne:current_user_id}})
上面的代码在语法上并不正确,但它会给你一个想法。