使用cpp从mongo db中检索浮点值

时间:2013-12-04 13:39:58

标签: c++ mongodb

以下是我的代码,知道 test 是mongodb数据库中集合中的浮点数。我不知道用什么来检索它。值得一提的是我可以使用以下行访问名称

name  = tmpArray[i].embeddedObject().getStringField("name");


string test;    
vector <BSONElement> testArray;
BSONObj bsnobj = cursor->next();
bsnobj.getObjectField("here").elems(tmpArray);
for(int i=0; i<testArray.size(); i++){
    test  = testArray[i].embeddedObject().getObjectField("test").toString();
    cout << test is: <<test << endl ;

}

这导致

test is: {}

这就是数据的样子

{

"here" : [
    {
        "name" : "x",
        "source" : "xx",
        "test" : 1,

    },
    {
        "name" : "y",
        "source" : "yy",
        "test" : 1,

    }
],

"if" : true

}

1 个答案:

答案 0 :(得分:1)

有两个问题:

test  = testArray[i].embeddedObject().getObjectField("test").toString();

您正在使用getObjectField,它返回另一个名为BSON的对象。如果你想要一个双倍,你需要使用getField代替。其次,要将test字段的值作为double获取,可以使用函数numberDouble

因此,您可以将代码更改为:

auto test  = testArray[i].embeddedObject().getField("test").numberDouble();

在您提供的示例数据中,结果为:

test is: 1.0
相关问题