MongoCXX - 处理不同的游标
MongoCXX - handling a cursor from distinct
我认为我在这里尝试做的事情应该很明显 - 查询集合 m_coll,并从该集合中获取所有唯一的 Density 值。然而,它返回的是一个元素,而不是一个完整的文档,所以你似乎无法键入它,它会向你尖叫,即 C++ exception with description "unset document::element" thrown in the test body.
。需要进行哪些修改才能使这项工作正常进行?
std::vector<int> MongoReader::getLvlOne()
{
std::vector<int> ret;
bsoncxx::builder::stream::document empty;
mongocxx::cursor cursor = m_coll.distinct("Density",empty.view());
for (bsoncxx::document::view doc : cursor)
{
ret.push_back(doc["Density"].get_int32());
}
return ret;
}
这真的很晦涩,而且记录不足,对此我深表歉意。我已经打开了 Jira 票证,CXX-1406,关于改进文档和提供示例。
distinct
方法 returns 一个游标,但它只提供一个文档,如下所示:
{
"values" : [ "A", "B" ],
"ok" : 1
}
这正是 distinct 数据库命令 returns。
您可以在 tests for distinct 中查看用法示例。
有一张票,CXX-1126,为了更好 API,但这将是一个重大变化,所以我们不确定何时会解决它。
我认为我在这里尝试做的事情应该很明显 - 查询集合 m_coll,并从该集合中获取所有唯一的 Density 值。然而,它返回的是一个元素,而不是一个完整的文档,所以你似乎无法键入它,它会向你尖叫,即 C++ exception with description "unset document::element" thrown in the test body.
。需要进行哪些修改才能使这项工作正常进行?
std::vector<int> MongoReader::getLvlOne()
{
std::vector<int> ret;
bsoncxx::builder::stream::document empty;
mongocxx::cursor cursor = m_coll.distinct("Density",empty.view());
for (bsoncxx::document::view doc : cursor)
{
ret.push_back(doc["Density"].get_int32());
}
return ret;
}
这真的很晦涩,而且记录不足,对此我深表歉意。我已经打开了 Jira 票证,CXX-1406,关于改进文档和提供示例。
distinct
方法 returns 一个游标,但它只提供一个文档,如下所示:
{
"values" : [ "A", "B" ],
"ok" : 1
}
这正是 distinct 数据库命令 returns。
您可以在 tests for distinct 中查看用法示例。
有一张票,CXX-1126,为了更好 API,但这将是一个重大变化,所以我们不确定何时会解决它。