Я пытаюсь создать уникальный индекс для коллекции. Этот уникальный индекс должен применяться только к документам, которые не содержат поле deleted_at
.
Я пытался:
db.collection.createIndex({a: 1, b:1},
{
unique: true,
partialFilterExpression: {
deleted_at: {$exists: false}
}
}
)
Но возникает ошибка, говорящая, что not
не поддерживается в createIndex
(я думаю, $exists: false
преобразуется в $not: {$exists: true}
).
Затем я попытался обойти:
db.collection.createIndex({a: 1, b:1},
{
unique: true,
sparse: false,
partialFilterExpression: {
deleted_at: {$type: 'null'}
}
}
)
Этот индекс действителен но не делает то, что я хочу. Это относится только к документам, которые содержат deleted_at
, но имеют значение null
. Это неприемлемо, потому что существующее приложение использует запросы с exists
повсеместно, чтобы исключить удаленный материал, поэтому я не могу просто перенести данные в поле, в котором для них установлено значение null.
Is Mon go поддерживает способ создания индекса и применяет этот индекс только к документам , а не , содержащим указанное поле c?
Если ответа нет, как я могу Попробовать, из БД , уникальность элементов соединения? Мое приложение будет полагаться на ошибку БД в случае возникновения гонки при вставке элементов.