Я немного новичок в mongoDB и пытаюсь выяснить, должен ли я использовать MongoDB или использовать знакомый SQL.
Сначала я действительно хотел использовать MongoDB, но все идет очень медленно, и у меня возникают трудности с проектированием моей БД и запросов.
Например:
SQL
Допустим, у меня есть эти таблицы:
User Table (Id, Name)
Group (Id, Name)
GroupInvites (UserId, GroupId, Status[A - active, I - invited])
И если бы я хотел знать, есть ли у игрока приглашения и групповые приглашения, было бы довольно легко выбрать SELECT и UPDATE из таблицы GroupInvites.
MongoDB
Но в MongoDB GroupInvites является избыточным, потому что у нас может быть Status в схеме группы.
const BetGroupSchema = mongoose.Schema({
name: {
type: String,
required: true
},
users: [{
userId: {
type: mongoose.SchemaTypes.ObjectId,
ref: 'users',
required: true
},
userStatus: {
type: String,
required: true
}
}]
})
Но теперь, если бы я хотел ВЫБРАТЬ только те группы, на которые приглашен конкретный пользователь, это было бы намного сложнее -
Group.find({
"users.userId": req.user._id,
"users.userStatus": "I"
})
Результатом этого будет предоставление всей группы, имеющей UserID, и всех групп, которые имеют UserStatus = 'I'.
А также я не могу найти быстрый способ обновить БД напрямую, если бы я хотел обновить статус определенного пользователя до «А».
Возможно, я ошибся, и кто-то может показать мне хороший способ реализовать его в MongoDB, или вы думаете, что было бы лучше использовать SQL.