У меня есть объект 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 ++?
Вот пример кода, который вы можете использовать:
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" : "Kollywood", "1" : "Tollywood" }
это объект запроса, я должен преобразовать это следующим образом
{
"$or": [
{
"tags.name": {
"$regex": "^kolly wood",
"$options": "xi"}
},
{
"tags.name": {
"$regex": "^tolly wood",
"$options": "xi"}
}
]
}