У меня есть документы, которые содержат простые массивы строк, и я не могу установить фильтр, способный возвращать все документы, где в указанном поле массива есть хотя бы одна строка элемента, которая не является "". Это коллекция из 6500 документов, где 3700 должны соответствовать вышеуказанным критериям (я проверил, потянув все записи и выполнив фильтр на стороне клиента).
Я в основном использую драйвер в .NET, но я также возился с фильтром в Compass. Используя драйвер, я попробовал Ne, Not (Eq), AnyNe, Not (AnyEq), Nin [""], Not (In [""]). Я хотел бы использовать ElemMatch, но, похоже, он ориентирован на массивы документов, а не на массивы строк, поскольку вам нужно указать имя поля, которого в данном случае не существует. Я также попытался настроить фильтр .Where, который прошел через все, чтобы найти непустую строку в массиве, но он вызвал исключение во время выполнения (я кодирую в VB).
Builders(Of BsonDocument).Filter.AnyNe(Of String)("field", String.Empty)
Я ожидал бы, что вышеупомянутый фильтр, где "поле" является ссылкой на массив строк, вернет 3700 документов, но я получу 0.
Я бы предположил, что я явно что-то здесь упускаю, так как это не похоже на сложный запрос / фильтр для построения. Любая помощь будет принята с благодарностью.