【问题标题】:Include regex elements in BSONArrayBuilder在 BSONArrayBuilder 中包含正则表达式元素
【发布时间】:2014-11-21 01:45:12
【问题描述】:

MongoDB C++ 驱动 API 中的 BSONArrayBuilder class 允许构建 BSON 数组,例如。

BSONArrayBuilder ba;
ba.append("foo");
ba.append("bar");
...
connection->query("col", BSON("x" << BSON("$in" << ba.arr())));

将在 mongo shell 中执行如下查询:

db.col.find({"x": {"$in": [ "foo", "bar" ] }})

但是,我需要通过以下方式(适用于 mongo shell)基于正则表达式而不是字符串进行查询:

db.col.find({"x": {"$in": [ /^foo/, /^bar/ ] }})

如何使用 C++ 驱动程序构建该数组?请注意,BSONObjBuilder class 有一个 appendRegex() 方法,该方法不包含在 BSONArrayBuilder 类中

非常感谢任何解决方法或指向有关此问题的信息的指针。谢谢!

【问题讨论】:

标签: c++ regex mongodb bson


【解决方案1】:

我们最近在 MongoDB C++ 驱动程序旧版本中添加了对此的支持,它将在即将发布的 1.0.0 候选版本中:

JIRA ticket in CXX Project

Commit

【讨论】:

    【解决方案2】:

    我检查过的一种解决方法是创建一个 JSON 字符串,然后使用 fromjson() 方法对其进行解析:

    std::string s = "{\"x\": {\"$in\": [ /^foo/, /^bar/ ] }";
    BSON b = fromjson(s);
    connection->query("col", b);
    

    但是,与直接组合 BSON 对象相比,我想知道使用 fromjson() 方法是否过于昂贵(由于字符串解析)。请对此有任何见解?

    【讨论】:

      猜你喜欢
      • 2017-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      • 2021-07-13
      • 1970-01-01
      • 2014-01-14
      • 1970-01-01
      相关资源
      最近更新 更多