Tinder喜欢应用程序MongoDB数据库架构

时间:2017-02-01 17:30:39

标签: node.js mongodb mongoose

我正在开发像Tinder这样的应用来试验MongoDB。 我想知道数据库架构。

主要的想法是用户可以“喜欢”许多用户,但无论“喜欢”的个人资料数量增长多少,都不太可能达到16MB的文件大小上限,所以在我的设计中,“喜欢”配置文件嵌入在一个人的个人资料中。

下面的

是使用mongoose

的用户架构示例
var BlockedSchema = mongoose.Schema({
BlockerUserId: {
    type: String,
    required: true
},
BlockedUserId: {
    type: String,
    required: true
}
});

另一方面,用户可能会被我的许多用户“讨厌”。 因此,用户不应该在他的下一个个人资料中查看“不喜欢”他的用户的个人资料,因此在我的设计中我创建了一个集合,其中包含“不喜欢”的用户的ID以及“不喜欢”的用户的ID

下面的

是使用mongoose

的阻止模式的示例
{{1}}

你认为这是一个好方法吗?以及需要创建哪些索引?

最佳,

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}})

上面的代码在语法上并不正确,但它会给你一个想法。