Недавно мы перешли с MongoDB на TokuMX. В одной коллекции все наши документы имеют числовое поле «docType». Некоторые документы имеют поле «DL_Number», а другие нет. Для документов с полем «DL_Number» комбинация «docType» и «DL_Number» должна служить уникальным индексом.
Используя C ++ Legacy, мы изначально создали такой индекс:
mongo::IndexSpec().addKey("docType").addKey("DL_Number").unique().partialFilterExpression(BSON("DL_Number" << BSON("$exists" << true)));
То, к чему мы стремились, было индексом, в котором «docType» и «DL_Number» предоставили бы уникальный ключ для документов, имеющих поле «DL_Number».
Утверждение сработало как find в MongoDB, но теперь, когда мы перешли на TokuMX, частичный фильтр больше не работает. Попытка вставить второй документ без поля «DL_Number» вызывает исключение.
У кого-нибудь еще была такая проблема с TokuMX? Вы смогли найти обходной путь?
Частичные индексы Особенность MongoDB 3.2, но TokuMX это на основе MongoDB 3.0, поэтому эта функция MongoDB недоступна в TokuMX.
Других решений пока нет …