1
在我的MongoDB數據庫我有這種形式的文件:斷言:13111:錯誤類型字段3 = 4 - MongoDB的C++司機
{ "timestamp" : "2012-01-15T17:56:14.85",
"Event" : [
{
"id" : "1851236846",
"qualifier_id" : "209"
},
{
"id" : "378258775",
"qualifier_id" : "57",
"value" : "1"
}
]
}
{ "timestamp" : "2012-01-15T16:06:09.378"
}
其中一些包含數組事件有些則沒有。
當我嘗試處理使用C++的MongoDB驅動器2.4中的數據:
while (cursor->more()) {
BSONObj bo = cursor->next();
cout << "timestamp: " << bo.getStringField("timestamp") << std::endl;
if(bo.hasElement("Event")) {
cout<<"HERE"<< endl;
std::vector<BSONElement> be = bo.getField("Event").Array(); // ---> at this line breaks!!
for (unsigned int j = 0; j < be.size(); j++) {
BSONObj bo2 = be[j].embeddedObject();
cout << "Qualifier ID: " << bo2.getStringField("qualifier_id") << std::endl;
cout << "Value: " << bo2.getStringField("value")<< std::endl;
}
}
我得到這個錯誤:
timestamp: 2012-01-15T16:06:06.529
HERE
Qualifier ID: 15
Value:
Qualifier ID: 56
Value: Back
timestamp: 2012-01-15T16:06:07.560
HERE
Qualifier ID: 212
Value: 14.6
Qualifier ID: 141
Value: 89.2
Qualifier ID: 213
Value: 5.9
Qualifier ID: 56
Value: Back
Qualifier ID: 140
Value: 46.7
timestamp: 2012-01-15T16:06:09.378
HERE
Sun Jul 21 20:06:16.974 Assertion: 13111:wrong type for field (Event) 3 != 4
caught wrong type for field (Event) 3 != 4
結論的條件bo.hasElement( 「事件」 )總是如此:(???)程序在這裏剎車:
std::vector<BSONElement> be = bo.getField("Event").Array();
當數組事件沒有成員時。
Pease help!