kana-desu
@kana-desu
Golang, Clojure, Elixir, Ruby

Как правильно выделить конкретный элемент в MongoDB?

Как это было раньше:
Был список элементов, у которых есть булевое поле active. Одновременно active может быть только у одного элемента, поэтому когда мы делаем для какого-то элемента active = true, то перед этим мы для всех сделаем active = false.

Но сейчас используется MongoDB и что-то мне подсказывает, что там можно все сделать не так. В голову приходит мысль сделать коллекцию, где будет всего одно один документ, содержащий id активного элемента.

Да и вообще, если нужно каким-то образом выделить группу элементов, то лучше им сделать булевое поле, говорящее о принадлежности к группе или же сделать коллекцию id-шников?
  • Вопрос задан
  • 216 просмотров
Пригласить эксперта
Ответы на вопрос 1
@deadkEEper1
В принципе, перед тем как делать документ из колекции активным, можно перед этим поискать в колекции уже сушествующий документ для которого active: true и изменить его на false. А уже после сделать активвным нужный.
С monggose будет выглядить примерно так:

var idToUpdate = 1;

mongoModel.findOneAndUpdate({active: true}, {active: false}, function(err, result){
    if(!err){
        mongoModel.update({_id: idToUpdate }, {active: true}, function(err, result){
                  console.log('Updated')
})
}
})
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы