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" }))
);
以下工作 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" }))
);