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