如何在 C++ 中为 BSON 对象编写正则表达式?

How to write Regular Expression for BSON Object in c++?

我有这样的 BSON 对象,

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

我将在 mongo 数据库中使用这个 bson 对象 $in 查询来获取所有不区分大小写的匹配标签。但我一个人得到完全匹配的结果。

{

    "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, "},\r\n                KollyWOOD");
std::cout << reslt << endl;

结果:

{ "0" : "Kollywood", "1" : "Tollywood" }这是查询对象,我必须按以下方式转换它

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