Я хочу найти документы в своих коллекциях по частичным значениям _id, которые я ввожу в приложении с графическим интерфейсом.
После некоторых поисков я обнаружил, что по крайней мере могу найти документы по их частичному идентификатору, используя следующий фильтр:
{ $where: "this._id.str.match(/5a.*/)" }
(где 5a
- это частичное значение идентификатора, введенное пользователем)
Моё серверное приложение, которое обрабатывает эти запросы, также поддерживает разбиение на страницы, поэтому я всегда запрашиваю базу данных, чтобы подсчитать / оценить количествосоответствующие документы.
Однако, если я добавлю это $where
выражение в мой FilterDefinition
, который я передам CountDocumentsAsync()
моей коллекции, я получу исключение:
MongoDB.Driver.MongoCommandException: Command aggregate failed: $where is not allowed in this context
Затем я посмотрел вверхcountDocuments
метод MongoDB и обнаружил, что оператор $where
недопустим в countDocuments()
, и вместо него следует использовать $expr
.
К сожалению, я не смог заставить что-либо работать с $expr
поскольку я не смог найти никаких полезных примеров, которые могли бы помочь мне с моими конкретными требованиями.
Я просто попытался обернуть выражение $where
в выражение $expr
bно это, похоже, не работает (Command aggregate failed: Unrecognized expression '$where'
)
Может кто-нибудь помочь мне в этом?