C 如何将一个巨大的int/double数组插入到bson对象中?

C 如何将一个巨大的int/double数组插入到bson对象中?,c,mongodb,bson,C,Mongodb,Bson,如何使用C库向BSON对象添加一个巨大的多维(100x100)整数/双精度/浮点字段 我所看到的最接近的StAdExpLoad问题/答案是C++() 我在想也许我应该用bson_append_二进制?但我不确定我会怎么做。。。我得承认我的C很弱。我会写我认为我可以如何将double[]转换为二进制,但我真的不知道如何转换 我不反对切换到C++,但是如果它是实用的,我更喜欢用C驱动程序。 谢谢 看起来您将使用bson\u append\u binary()函数调用: 所以代码看起来像: int[

如何使用C库向BSON对象添加一个巨大的多维(100x100)整数/双精度/浮点字段

我所看到的最接近的StAdExpLoad问题/答案是C++()

我在想也许我应该用bson_append_二进制?但我不确定我会怎么做。。。我得承认我的C很弱。我会写我认为我可以如何将double[]转换为二进制,但我真的不知道如何转换

我不反对切换到C++,但是如果它是实用的,我更喜欢用C驱动程序。
谢谢

看起来您将使用bson\u append\u binary()函数调用:

所以代码看起来像:

int[100][100] bigArray;
bson_append_binary(bsonHandle, "yourFieldName", BSON_BIN_BINARY, bigArray, sizeof(bigArray));

一、 回答的人是对的,是用
bson\u append\u 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)客户端读取二进制文件。感谢那些帮助过我的人

嘿,谢谢!我想它一定是个字符,我昨晚又玩了一些。我会在“答案”中写更多,而不是评论。谢谢你!我想我读到的BSON_BIN_二进制文件被弃用了。也就是说,at甚至没有在C客户机的v0.7标记中定义。在.h文件中,我找到了BSON\u BIN\u USER,而不是定义的BSON\u BINARY\u子类型\u USER\u