mongocxx 与正则表达式模式匹配不同

mongocxx distinct with regex pattern matching

以下工作 C++ 代码将 return 给定字段的所有 distinct(唯一值):

document command;
command.append(
    kvp("distinct", "listings"), 
    kvp("key", "streetName")
);

检索所有不同的值,这是输出示例:

{
    "values": [
        "3rd street",
        "4th",
        "5th",
        ...
        "zion",
        "zuni"
    ],
    "ok": 1.0
}

在 mongodb shell,我可以使用 正则表达式 将不同的值减少为以 'glen' 开头的值:

db.listings.distinct(
    "streetName",
    { "streetName": {"$regex": /^glen/, "$options" : ""} }
)

检索到匹配的不同值,这是输出示例:

["glen","glendale","glenfield"]

我遇到的问题是,当使用 mongo-cxx 驱动程序:

document command;
command.append(
    kvp("distinct", "listings"), 
    kvp("key", "streetName"),
    kvp("streetName", bsoncxx::types::b_regex{ "^glen"})
);

这是发送到 mongoDB 服务器的命令的样子:

{
    "distinct": "listings",
    "key": "streetName",
    "streetName": {
        "$regex": "^glen",
        "$options": ""
    }
}

不幸的是,return上面的命令错误:BAD(BSON字段'distinct.streetName'是一个未知字段。:一般服务器错误)

希望有人能帮我弄清楚如何为数据子集(匹配文档)获取不同的值。

如果您不介意直接调用 distinct(),这会尝试翻译您提供的 MongoDB shell 示例吗?

db["listings"].distinct(
      "streetName",
       make_document(kvp("streetName", bsoncxx::types::b_regex{ "^glen" }))
);