Как написать регулярное выражение для объекта BSON в C ++?

У меня есть объект BSON, как это,

{ "0" : "Kollywood", "1" : "Tollywood" }

Я собираюсь использовать этот объект bson $ в запросе в mongo db, чтобы получить все совпадающие теги без учета регистра. но я получаю точно такой же результат в одиночку.

{

    "result": [
{
"_id": 110,
"tags": [
{
"id": "5524cdfffe13b4934bbd6cab",
"name": "Kollywood"}
]
}
],
"ok": 1
}

Мое требование: (Все подходящие теги без учета регистра)

{

"result": [
{
"_id": 110,
"tags": [
{
"id": "5524cdfffe13b4934bbd6cab",
"name": "Kollywood"},
{
"id": "5524cdfffe13b4934bbd6cab",
"name": "KollyWOOD"}
]
}
],
"ok": 1
}

Как я могу сделать это в C ++?

-1

Решение

Вот пример кода, который вы можете использовать:

string inp = "{\r\n\r\n    \"result\": [\r\n        {\r\n            \"_id\": 110, \r\n            \"tags\": [\r\n                {\r\n                    \"id\": \"5524cdfffe13b4934bbd6cab\", \r\n                    \"name\": \"Kollywood\"\r\n                }\r\n            ]\r\n        }\r\n    ], \r\n    \"ok\": 1\r\n}";
string regx = "(\"tags\":[\\s\\r\\n]+\\[[\\s\\r\\n]+)(\\{[\\s\\r\\n]+\"id\":[\\s\\r\\n]+\"[^\"]*?\",[\\s\\r\\n]+\"name\":[\\s\\r\\n]+\")([^\"]*?)(\"[\\s\\r\\n]+\\})";
regex rxg(regx);
string reslt = regex_replace(inp, rxg, "$1$2$3},\r\n                $2KollyWOOD$4");
std::cout << reslt << endl;

Результат:

введите описание изображения здесь

0

Другие решения

{ "0" : "Kollywood", "1" : "Tollywood" } это объект запроса, я должен преобразовать это следующим образом

            {
"$or": [
{
"tags.name": {
"$regex": "^kolly wood",
"$options": "xi"}
},
{
"tags.name": {
"$regex": "^tolly wood",
"$options": "xi"}
}
]
}
-1