我有这样的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 ++做到这一点?
答案 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;
结果:
答案 1 :(得分:-1)
{ "0" : "Kollywood", "1" : "Tollywood" }
这是查询对象,我必须将其转换为以下方式
{
"$or": [
{
"tags.name": {
"$regex": "^kolly wood",
"$options": "xi"
}
},
{
"tags.name": {
"$regex": "^tolly wood",
"$options": "xi"
}
}
]
}