Mongodb MongoCXX-从不同的位置处理光标

Mongodb MongoCXX-从不同的位置处理光标,mongodb,mongo-cxx-driver,Mongodb,Mongo Cxx Driver,我认为我在这里要做的应该是相当明显的——查询一个集合m_coll,并从该集合中获取所有唯一的密度值。然而,它返回的是一个元素,而不是一个完整的文档,因此您似乎无法对它进行键控,它会向您发出尖叫,即C++异常,测试体中抛出描述为“unset document::element”。。需要进行哪些修改才能使其正常工作 std::vector<int> MongoReader::getLvlOne() { std::vector<int> ret; bsoncxx

我认为我在这里要做的应该是相当明显的——查询一个集合m_coll,并从该集合中获取所有唯一的密度值。然而,它返回的是一个元素,而不是一个完整的文档,因此您似乎无法对它进行键控,它会向您发出尖叫,即
C++异常,测试体中抛出描述为“unset document::element”。
。需要进行哪些修改才能使其正常工作

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;
}
std::vector MongoReader::getLvlOne()
{
std::载体ret;
bsoncxx::builder::stream::文档为空;
mongocxx::cursor cursor=m_coll.distinct(“密度”,empty.view());
for(bsoncxx::document::view doc:cursor)
{
ret.push_back(doc[“Density”].get_int32());
}
返回ret;
}

这真的是晦涩难懂,文档也不完整,对此我深表歉意。我开了一张Jira的票,关于改进文档并提供一个例子

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

{
   "values" : [ "A", "B" ],
   "ok" : 1
}
这正是database命令返回的结果

您可以在中看到一个使用示例

有一个更好的API,但这将是一个突破性的变化,因此我们不确定何时解决它。

.distinct()
不返回“游标”。在所有的驱动程序中,它基本上是一个“列表”。不看CXX文档,它可能是一个“向量”。因此,您分配给的类型不正确。这就是问题所在。