Какой mongoDB ODM для C++?
Недавно я начал разработку проекта с использованием C++11 и MongoDb, хотя я успешно использовал драйвер mongocxx для реализации логики, но для десериализации данных требуется некоторое время.
mongocxx::options::find opts;
opts.limit(15000);
mongocxx::cursor cursor = collection.find({},opts);
for(auto && doc : cursor) {
bsoncxx::document::element name = doc["Name"];
bsoncxx::document::element experience = doc["Experience"];
bsoncxx::document::element jobTitle = experience["JobTitle"];
bsoncxx::document::element keywords = experience["Keywords"];
string name = name.get_utf8().value.to_string();
string jobTitleStr = jobTitle.get_utf8().value.to_string();
bsoncxx::array::view keyWordsarray{keywords.get_array()};
set<string> keyWordsSet;
for (bsoncxx::array::element msg : keyWordsarray) {
keyWordsSet.insert(msg.get_utf8().value.to_string());
}
}
Вышеуказанная операция занимает у меня 1,5 секунды. Я надеялся, что в C++ есть какой-нибудь ODM для mongoDb (например, mongoengine в Python), чтобы позаботиться о работе по десериализации.
1 ответ
Решение
Вы должны взглянуть на мангровые заросли: https://github.com/mongodb-labs/mangrove
Это проект mongodb-labs, поэтому он официально не поддерживается, но он может показать вам, как подойти к созданию собственного сопоставления документа объекта выше mongocxx.