gpt4 book ai didi

c++ - MongoDB C 驱动程序 : how to use regex query collection?

转载 作者:行者123 更新时间:2023-11-30 16:37:44 26 4
gpt4 key购买 nike

例如,在 MySQL 中查询如下:

select name from test_tab where id = 1 and  name like 'test%'; 

我想通过mongodb C驱动在mongodb中翻译这个查询,所以我写了这样的代码,但是都不起作用(searchDoc()函数没问题。

string strName = "";
bson_t *cond = bson_new();
BSON_APPEND_INT32(cond, "id", 1);
if (strlen(name.c_str()) > 0)
{
strName = "/^" + name + "/";
bson_t *child;
child = bson_new();
bson_append_document_begin(cond, "name", -1, child);
BSON_APPEND_UTF8(child, "$regex", strName.c_str());
bson_append_document_end(cond, child);
}
mongoc_cursor_t *cursor(NULL);
int iRet = searchDoc("db", "test_tab", cond, cursor);
if (iRet < 0)
{
bson_destroy(cond);
mongoc_cursor_destroy(cursor);
return -1;
}

string strName = "";
bson_t *cond = bson_new();
BSON_APPEND_INT32(cond, "id", 1);
if (strlen(name.c_str()) > 0)
{
strName = "/^" + name + ".*/";
BSON_APPEND_REGEX(cond, "name", strName.c_str(), "i");
}
mongoc_cursor_t *cursor(NULL);
int iRet = searchDoc("db", "test_tab", cond, cursor);
if (iRet < 0)
{
bson_destroy(cond);
mongoc_cursor_destroy(cursor);
return -1;
}

如何构建正则表达式模式来查询记录工作是否正常?谢谢

最佳答案

我搜索此页面:https://jira.mongodb.org/browse/CDRIVER-206 ,有一个重要的提示:“构建正则表达式时不需要包含正斜杠。”

所以我删除了我的代码中的正斜杠

 strName = "/^" + name + ".*/"; 
BSON_APPEND_REGEX(cond, "name", strName.c_str(), "i");

更改为

  strName = "/^" + name + ".*/";
BSON_APPEND_REGEX(cond, "name", strName.c_str(), "i");

它可以工作。我的问题已经解决了。

关于c++ - MongoDB C 驱动程序 : how to use regex query collection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47746057/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com