Увеличивайте поля, пока не существует. MongoDB - PullRequest
0 голосов

У меня есть проблема и решение путем создания дельт и обновления БД, но, может быть, у кого-то есть другое решение, более удобное? Все время, когда я обновляю или создаю элемент, я должен пересчитывать поле place.

Есть коллекция posts:

{pid: '1'}
{pid: '2'}
{pid: '3'}
{pid: '4'}

Я обновляю эту коллекцию и добавляю новое поле:

{pid: '1'}
{pid: '2', place: 3}
{pid: '3'}
{pid: '4'}

И еще один раз

{pid: '1'}
{pid: '2', place: 3}
{pid: '3'}
{pid: '4', place: 5}

Если, если вы делаете это по строке, например, поместите место: 1 после места: 2 ... Это прекрасно работает, и когда я обновлюсь, или так будет работать хорошо но если я делаю это случайно, у меня возникает проблема вроде:

Я хочу в коллекции выше, обновить pid: 3 и поставить место: 1 я получу

{pid: '3', place: 1}
{pid: '1'}
{pid: '2', place: 4}
{pid: '4', place: 6}

место 3 -> место 4 и место 5 -> место 6. Я использую $ in c и $ gte / $ lte относительно условий. Один из запросов:

const recahnage = await modelPost.updateMany(
                        {
                            place: {
                                $gte: place
                            },
                            categories: {
                                $in: categories
                            }
                        },
                        {
                            $inc: {
                                place: 1
                            }
                        }) 

В этой ситуации мне не нужно увеличивать место: 3 и место: 5, потому что место: 2 не существует. Я хочу прекратить увеличиваться, если место не существует.

У кого-нибудь есть идеи? Я не хочу делать дельту и сразу ставить place поля во всех предметах.

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