MongoCXX - 处理来自distinct的游标

时间:2017-07-19 20:36:48

标签: mongodb mongo-cxx-driver

我认为我应该在这里做的很明显 - 查询集合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;
}

1 个答案:

答案 0 :(得分:1)

这真是模糊不清,记录不清,为此我道歉。我已经开了一张Jira票,CXX-1406,关于改进文档和提供示例。

distinct方法返回一个游标,但它只提供一个如下所示的文档:

{
   "values" : [ "A", "B" ],
   "ok" : 1
}

这正是distinct数据库命令返回的内容。

您可以在tests for distinct中查看使用示例。

有一张票,CXX-1126,用于更好的API,但这将是一个重大改变,所以我们不确定何时会解决它。