о, привет, я автор bsonsearch!
edit- Открыл комнату для обсуждения https://chat.stackoverflow.com/rooms/181623/bsonsearch
edit2: похоже, вы пытаетесь использовать расширенный JSON с $ regex, но кодируете в биты BSON.Нам нужно будет выбрать один или другой и использовать соответствующий bson_new_from_ * на стороне C, чтобы десериализовать его.
Мой код на самом деле не имеет ничего общего с mongo-c-драйвером, кроме использования некоторого их кода.Это отдельный проект, предназначенный для сопоставления документов на стороне клиента.
Если вы знаете, что не пытаетесь подключить bsoncompare к mongodb, вам нужно использовать двоичный формат регулярных выражений mongodb непосредственно в строке, если вы собираетесь использовать его таким образом.
bsonsearchregex shcema происходит непосредственно из схемы регулярных выражений mongodb (разделение $ regex от $ options) https://docs.mongodb.com/manual/reference/operator/query/regex/
Этот тестовый файл содержит примеры https://github.com/bauman/bsonsearch/blob/master/lib/tests/bsoncompare_regex.c
для вашего конкретного случая, используйте это:
spec = {"foo": {"$regex": ".", "$options": "i"}}
^ ^
---------------------------^ ^
--------------------------------------------^ (case insensitive)
поместите строку utf-8, которую вы хотите использовать в качестве регулярного выражения, непосредственно в ключе $ regex (точка в вашем случае) и добавьте ключ $ options с учетом нечувствительности к регистру (с i - без учета регистра)
Вы, наверное, знаете это, но а.просто соответствует ровно одному символу в любом месте строки.
https://www.debuggex.com/cheatsheet/regex/pcre