Как обновить поле в коллекции MongoDB, чтобы оно увеличивалось линейно - PullRequest
0 голосов
/ 27 февраля 2020

Я уже давно борюсь с mongodb, и идея довольно проста: у меня есть коллекция, и я хочу добавить новое поле идентификатора. Это поле контролируется нашим API, и оно автоматически увеличивает его для каждого нового вставленного документа.

Дело в том, что в коллекции уже есть несколько документов, поэтому я должен инициализировать каждый документ номером последовательно, независимо от порядка:

collection: holiday {
'date': date,
'name': string
}

В коллекции 12 документов, поэтому каждый документ должен получить свойство ID со значениями от 1 до 12. Какой тип запроса или функции мне следует использовать для этого? Пока никаких ограничений, и производительность не является проблемой.

1 Ответ

0 голосов
/ 28 февраля 2020

Может быть, это не оптимально, но работает:)

var newId = 1;
var oldIds = [];
db.holiday.find().forEach(it => {   
    const documentToMigrate = it;
    oldIds.push(it._id);
    documentToMigrate._id = newId;
    db.holiday.save(documentToMigrate);
    ++newId;
})

db.holiday.remove({_id: {$in: oldIds}});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...