如何使用C库向BSON对象添加一个巨大的多维(100x100)整数/双/浮点字段?
我看到的最接近的stackoverflow问题/答案是针对C ++(MongoDB: how do I store binary array in a BSON in C++?)
我在想也许我应该使用bson_append_binary?我不确定我是怎么做到的......我应该承认我的C很弱。我会写我认为我可以将double []转换为二进制,但我真的不知道如何。
我并不反对转换到C ++,但如果它是实用的,我宁愿坚持使用C驱动程序。
谢谢!
答案 0 :(得分:1)
我,回答的人是正确的,它是bson_append_binary
。
否则,
int array[] = {10,11,12};
int *array_ptr = array;
...
bson_append_binary(&b, "fld", BSON_BIN_USER, (char*)array_ptr, sizeof(array));
...
然后,我能够通过以下方式读取mongo中的数组:
...
if ( bson_find( iterator, mongo_cursor_bson( cursor ), "fld" )) {
array_ptr = (int*)bson_iterator_bin_data(iterator);
printf(" first element: %i\n", *(array_ptr++));
printf("second element: %i\n", *(array_ptr++));
printf(" third element: %i\n", *array_ptr);
}
...
看起来很简单,但因为我的C太糟糕了我花了好几个小时。下一个挑战是弄清楚如何从另一个(例如PHP)客户端读取二进制文件。感谢那些帮助过的人!
答案 1 :(得分:0)
看起来你会使用bson_append_binary()函数调用:
所以代码看起来像是:
int[100][100] bigArray;
bson_append_binary(bsonHandle, "yourFieldName", BSON_BIN_BINARY, bigArray, sizeof(bigArray));