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

时间:2015-04-24 05:06:31

标签: c++ regex mongodb bson

我有这样的BSON对象,

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

我将在mongo db中使用此bson对象$来获取所有匹配的标签而不区分大小写。但是我得到了完全匹配的结果。

{

    "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 ++做到这一点?

2 个答案:

答案 0 :(得分:0)

以下是您可以使用的示例代码:

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;

结果:

enter image description here

答案 1 :(得分:-1)

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

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