Пн go. Увеличьте значение поля относительно данных - PullRequest
0 голосов

Привет, у меня есть проблема, но есть и решение, как это сделать. Но, может быть, есть решение проще, чем мое.

Выпуск: Mongodb. Например, у меня есть структура для коллекции pages:

{
  place: 1,
  name: 'One'
  ...
},
{
  place: 2,
  name: 'Two'
  ...
},
{
  place: 3,
  name: 'Three'
  ...
}

Когда я добавляю новый элемент в базу данных, он должен занять дворец 4. Но если я положу на место нового элемента: 1 все старые элементы должны изменить пример :

{
  place: 1,
  name: 'NEW ITEM'
  ...
},
{
  place: 2,
  name: 'One'
  ...
},
{
  place: 3,
  name: 'Two'
  ...
},
{
  place: 4,
  name: 'Three'
  ...
}

Решение: я получаю все предметы из таблицы по лимиту со смещением, получаю l oop и увеличиваю place в каждом предмете.

У кого-нибудь есть решение лучше?

1 Ответ

1 голос
/ 31 марта 2020

Вы можете использовать оператор $ in c, чтобы обновить все элементы с большим или одинаковым местом в одном запросе перед вставкой нового элемента. Что-то вроде:

db.pages.updateMany({place: {$gte: new_place}}, {$inc: {place: 1}})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...