Добрый день!
У меня есть коллекция с такими документами, как
{
account_id: "accountOne"
state: stateOne
}
Я хочу убедиться, что существует только один документ с парой ID аккаунта<->состояние, где состояние равно состояниеОдин, но я хочу иметь много документов, в которых состояние равно любому значению, отличному от состояниеОдин.
Например, я хочу иметь эти данные в своей коллекции:
{
account_id: "accountOne"
state: stateOne
}
{
account_id: "accountOne"
state: stateTwo
}
{
account_id: "accountOne"
state: stateTwo
}
Если я сделаю индекс уникальный, например {account_id: 1, state: 1}, я получу ошибку. Есть ли способ сделать это через БД? Или я должен сделать это через мою сервисную логику?
Если я сделаю уникальный индекс для полей {account_id: 1, state: 1}, я не смогу создать несколько документов с "state: stateTwo" - при вставке я получу ошибку дублирующего индекса ключа
Каковы критерии, которые отличают stateOne от других состояний (кроме того, что может быть только одно stateOne, связанное с account_id).

Попробуй это:
db.collection.createIndex(
{ account_id: 1, state: 1 },
{ unique: true, partialFilterExpression: { state: stateOne } }
)
Возможно, предоставьте нам команду, как вы создали файл index. И самый главный вопрос: Что вы подразумеваете под "я получу ошибку"? Пожалуйста, укажите ошибку, которую вы получаете!