使用cpp从mongodb中检索浮点值

retrieve a floating point value from mongo db using cpp

本文关键字:检索 cpp mongodb 使用      更新时间:2023-10-16

以下是我的代码,我知道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
}

有两个问题:

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

您使用的是返回另一个命名BSON对象的getObjectField。如果您想要双人间,则需要使用getField。其次,要获取test字段的值作为double,可以使用函数numberDouble

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

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

在您提供的样本数据中,结果将是:

test is: 1.0