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,但这将是一个重大变化,所以我们不确定何时会解决它。