1

直到上个月,我还在使用旧版 C 驱动程序,但从上周开始,我转向了新的 C 驱动程序,它看起来非常好且易于使用。我在数据库中保存了一个文档,其中包含 3 个字符串、2 个整数和 2 个数组。现在我想更新这个数组。我正在尝试这样,

update_mod = BCON_NEW ("$set", "{",
                           "Int1", BCON_INT32 (23),
                           "Int2",BCON_INT32(34),
                           "String1",BCON_UTF8("String1"),
                           "String2", BCON_UTF8("String2"),
                           "String3",BCON_UTF8("String3"),
                           "Array1", BCON_ARRAY(&Array1),
                           "Array2", BCON_ARRAY(&Array2),
                       "}");
            }

但它不起作用,如果我尝试在没有 Array 的情况下更新它,那么它工作得很好。谁能告诉我如何做到这一点。而且我想为每次更新在数组中保存多个值。

4

2 回答 2

1

BCON_ARRAY 使用参数列表作为输入,而不是指向数组的指针。你应该使用类似的东西:

BCON_ARRAY(Array1[0], Array1[1], ...);

于 2014-08-14T12:51:49.870 回答
0

您可以将 bson_t 类型的变量传递给 BCON_ARRAY。因此,首先您将从数组中创建一个 BCON_DOCUMENT,然后您可以将该文档作为输入传递给 BCON_ARRAY;如下所示:

bson_error_t error;
bson_t *bson_array_doc = bson_new_from_json((const uint8_t *)my_array_str, -1, &error);
bson_t *bson_doc = BCON_NEW("$set", "{", "my_array", BCON_ARRAY(bson_array_doc), "}");

于 2021-07-06T19:34:52.373 回答