2016-11-30 57 views
0

将数组添加到文档时,open_array和close_array在投入文档流时必须同时发生。在添加'close_array'时,后面的代码在最后一行失败(编译时间)。MongoDB C++,未能将数组添加到文档中

vector<string> List; 
... 

document Doc; 
Doc <<"List" <<open_array; 
for (string Str: List) { 
    Doc <<Str; 
} 
Doc <<close_array; 

但我不知道“列表”中要添加到文档的元素数量。 MongoDB仍然缺少C++驱动程序的示例。

此代码有效,但“列表”中的项目数量未知。

Doc 
<<open_array 
<<List[0] <<List[1] <<List[2] <<... 
<<close_array; 

G ++错误:

content.cpp:65:7: error: no match for ‘operator<<’ (operand types are ‘bsoncxx::v_noabi::builder::stream::document’ and ‘const bsoncxx::v_noabi::builder::stream::close_array_type’) 
    Doc <<close_array; 
    ~~~~^~~~~~~~~~~~~ 
compilation terminated due to -Wfatal-errors. 

回答

0

实测值从Adding a BSON Array to a MongoDB 3.2 document and extracting the values back (MongoCXX 3.2) (C++ 11)

这不是能够将 'close_array' 添加到文档本身,它必须通”的阵列构建器被添加(一个溶液键入'auto',我没有挖出来找到真正的类型)。

auto Array = Doc <<"List" <<open_array; 
for (string Str: List) 
    Array <<Str; 
Array <<close_array; 

要注意的是,上面的代码工作正常,但下面不会

auto Array = Doc <<"List"; 
Array <<open_array; 
for (string Str: List) 
    Array <<Str; 
Array <<close_array; 
+0

你知道,如果在3.0工作吗?我认为它不... –

+0

我建立从https://github.com/mongodb/mongo-cxx-driver/archive/r3.1.0.tar.gz的mongodb C++驱动程序3.1.0 – johnlowvale

+0

像在代码在我的答案工作正常 – johnlowvale

相关问题