Следующий работающий код C ++ вернет все различные (уникальные значения) для данного поля:
document command;
command.append(
kvp("distinct", "listings"),
kvp("key", "streetName")
);
Все различные значения получены, и вот пример выходных данных:
{
"values": [
"3rd street",
"4th",
"5th",
...
"zion",
"zuni"
],
"ok": 1.0
}
В оболочке mongodb я могу использовать регулярное выражение , чтобы уменьшить различные значения до значений, начинающихся с 'glen':
db.listings.distinct(
"streetName",
{ "streetName": {"$regex": /^glen/, "$options" : ""} }
)
Соответствие различные значения получены, и вот пример вывода:
["glen", "glendale", "glenfield"]
Проблема, с которой я столкнулся я не могу понять, как ограничить отдельные значения * теми , которые соответствуют шаблону регулярных выражений при использовании драйвера mon go -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": ""
}
}
К сожалению, приведенная выше команда возвращает ошибку: BAD (поле BSON 'diver.streetName) '- неизвестное поле .: generi c ошибка сервера)
Hopefull y кто-то может помочь мне понять, как получить различные значения для подмножества данных (соответствующие документы).