В настоящее время у меня есть некоторый код, который я выполняю каждый раз, когда мне нужно обновить определенный ключ в вложенном документе, он в основном постоянно обновляет вложенный документ, который соответствует значению времени, и как только значение временного интервала переходит на него, создается новый вложенный документи продолжайте обновлять его до следующего приращения.
Мой вопрос заключается в том, могу ли я сделать это с помощью единственного обновления, связанного с тем, что я сейчас делаю с двумя.Первый проверяет, соответствует ли время вложенному документу «Не равно» времени, а второй проверяет, совпадает ли время «Это тоже равно», и они используют $ push, $ set соответствующим образом.
У меня естьпробовал так много разных комбинаций, это работает в настоящее время, но я хотел бы найти более краткий способ, если это возможно.
TrendModel.updateOne(
{league, rider, type, event, 'range.time': {$ne: time}},
{...entry, $push: {'range': { $each: [range], $slice: -6}}},
{upsert: true}
).catch(err => new Error(err.message)),
TrendModel.updateOne(
{league, rider, type, event, 'range.time': {$eq: time}},
{...entry, $set: {'range.$': range}},
{upsert: true}
).catch(err => new Error(err.message))