Где поместить данные в mongodb? - PullRequest
0 голосов
/ 15 октября 2019

В MongoDB у меня есть коллекция под названием users. Я должен хранить points для каждого пользователя. Очки могут увеличиваться или уменьшаться со временем. Если бы мне пришлось использовать SQL-DB, то я бы хранил точки в отдельной таблице с именем UserPoint со следующими столбцами:

UserID, DateTime, CurrentPoint, TotalPoint, Description

. Мне нужно было бы получить самую последнюю TotalPoint для данногоПользователь и вставлять новые строки в таблицу UserPoint слишком часто. Как сделать то же самое в No-SQL или MongoDB? Должен ли я создать новую коллекцию с именем points или добавить новое поле массива объектов в users collection?

{
   points: [
     {
        datetime: XXX,
        currentPoint: YYY,
        totalPoint: ZZZ,
        descriotion: WWW
     },...
   ]
}

1 Ответ

1 голос
/ 15 октября 2019

Я думаю, что в этом случае имеет смысл использовать родительские ссылки.

И поскольку totalPoints можно рассчитать по точкам в приложении, нет необходимости сохранять их в одной из моделей.

const userSchema = new mongoose.Schema({
  name: String,
  email: String,
  ...
});

const pointSchema = new mongoose.Schema({
  datetime: date,
  currentPoint: number,
  description: String,
  user: {
    type: mongoose.Schema.ObjectId,
    ref: "User",
    required: [true, "Point must have a user"]
  }
});

Итак, наша модель User проста, и добавить точку в коллекцию точек довольно просто (обычная вставка, без манипуляций с массивами)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...