1BSON_ARRAY_BUILDER_T(3)             libbson            BSON_ARRAY_BUILDER_T(3)
2
3
4
5          typedef struct _bson_array_builder_t bson_array_builder_t;
6
7       bson_array_builder_t  may  be  used  to  build  BSON  arrays.  bson_ar‐
8       ray_builder_t internally tracks and uses the array index as a key ("0",
9       "1", "2", ...) when appending elements.
10

APPENDING AN ARRAY VALUE

12          typedef struct _bson_array_builder_t bson_array_builder_t;
13
14          bool
15          bson_append_array_builder_begin (bson_t *bson,
16                                           const char *key,
17                                           int key_length,
18                                           bson_array_builder_t **child);
19
20          bool
21          bson_append_array_builder_end (bson_t *bson, bson_array_builder_t *child);
22
23          #define BSON_APPEND_ARRAY_BUILDER_BEGIN(b, key, child) \
24            bson_append_array_builder_begin (b, key, (int) strlen (key), child)
25
26       bson_append_array_builder_begin  may  be  used  to append an array as a
27       value. Example:
28
29          bson_t parent = BSON_INITIALIZER;
30          bson_array_builder_t *bab;
31
32          bson_append_array_builder_begin (&parent, "foo", 3, &bab);
33          bson_array_builder_append_int32 (bab, 9);
34          bson_array_builder_append_int32 (bab, 8);
35          bson_array_builder_append_int32 (bab, 7);
36          bson_append_array_builder_end (&parent, bab);
37
38          char *str = bson_as_relaxed_extended_json (&parent, NULL);
39          printf ("%s\n", str); // Prints: { "foo" : [ 9, 8, 7 ] }
40          bson_free (str);
41
42          bson_destroy (&parent);
43
44

CREATING A TOP-LEVEL ARRAY

46          bson_array_builder_t * bson_array_builder_new (void);
47
48          bool
49          bson_array_builder_build (bson_array_builder_t *bab, bson_t *out);
50
51          BSON_EXPORT (void)
52          bson_array_builder_destroy (bson_array_builder_t *bab);
53
54       bson_array_builder_new and  bson_array_builder_build  may  be  used  to
55       build  a top-level BSON array. bson_array_builder_build initializes and
56       moves BSON data to out. The bson_array_builder_t may be reused and will
57       start appending a new array at index "0":
58
59       Example:
60
61          bson_t out;
62          bson_array_builder_t *bab = bson_array_builder_new ();
63
64          bson_array_builder_append_int32 (bab, 9);
65          bson_array_builder_append_int32 (bab, 8);
66          bson_array_builder_append_int32 (bab, 7);
67          bson_array_builder_build (bab, &out);
68
69          char *str = bson_array_as_relaxed_extended_json (&out, NULL);
70          printf ("%s\n", str); // Prints: [ 9, 8, 7 ]
71          bson_free (str);
72
73          bson_array_builder_destroy (bab);
74
75

APPENDING VALUES TO AN ARRAY

77       bson_array_builder_append_*  functions are provided to append values to
78       a BSON array. The bson_array_builder_append_* functions internally  use
79       bson_append_* and provide the array index as a key:
80
81          bool
82          bson_array_builder_append_value (bson_array_builder_t *bab,
83                                           const bson_value_t *value);
84
85
86          bool
87          bson_array_builder_append_array (bson_array_builder_t *bab,
88                                           const bson_t *array);
89
90
91          bool
92          bson_array_builder_append_binary (bson_array_builder_t *bab,
93                                            bson_subtype_t subtype,
94                                            const uint8_t *binary,
95                                            uint32_t length);
96
97          bool
98          bson_array_builder_append_bool (bson_array_builder_t *bab, bool value);
99
100
101          bool
102          bson_array_builder_append_code (bson_array_builder_t *bab,
103                                          const char *javascript);
104
105
106          bool
107          bson_array_builder_append_code_with_scope (bson_array_builder_t *bab,
108                                                     const char *javascript,
109                                                     const bson_t *scope);
110
111
112          bool
113          bson_array_builder_append_dbpointer (bson_array_builder_t *bab,
114                                               const char *collection,
115                                               const bson_oid_t *oid);
116
117
118          bool
119          bson_array_builder_append_double (bson_array_builder_t *bab, double value);
120
121
122          bool
123          bson_array_builder_append_document (bson_array_builder_t *bab,
124                                              const bson_t *value);
125
126
127          bool
128          bson_array_builder_append_document_begin (bson_array_builder_t *bab,
129                                                    bson_t *child);
130
131
132          bool
133          bson_array_builder_append_document_end (bson_array_builder_t *bab,
134                                                  bson_t *child);
135
136          bool
137          bson_array_builder_append_int32 (bson_array_builder_t *bab, int32_t value);
138
139
140          bool
141          bson_array_builder_append_int64 (bson_array_builder_t *bab, int64_t value);
142
143
144          bool
145          bson_array_builder_append_decimal128 (bson_array_builder_t *bab,
146                                                const bson_decimal128_t *value);
147
148
149          bool
150          bson_array_builder_append_iter (bson_array_builder_t *bab,
151                                          const bson_iter_t *iter);
152
153
154          bool
155          bson_array_builder_append_minkey (bson_array_builder_t *bab);
156
157
158          bool
159          bson_array_builder_append_maxkey (bson_array_builder_t *bab);
160
161
162          bool
163          bson_array_builder_append_null (bson_array_builder_t *bab);
164
165
166          bool
167          bson_array_builder_append_oid (bson_array_builder_t *bab,
168                                         const bson_oid_t *oid);
169
170
171          bool
172          bson_array_builder_append_regex (bson_array_builder_t *bab,
173                                           const char *regex,
174                                           const char *options);
175
176
177          bool
178          bson_array_builder_append_regex_w_len (bson_array_builder_t *bab,
179                                                const char *regex,
180                                                int regex_length,
181                                                const char *options);
182
183          bool
184          bson_array_builder_append_utf8 (bson_array_builder_t *bab,
185                                          const char *value,
186                                          int length);
187
188          bool
189          bson_array_builder_append_symbol (bson_array_builder_t *bab,
190                                            const char *value,
191                                            int length);
192
193          bool
194          bson_array_builder_append_time_t (bson_array_builder_t *bab, time_t value);
195
196
197          bool
198          bson_array_builder_append_timeval (bson_array_builder_t *bab,
199                                             struct timeval *value);
200
201
202          bool
203          bson_array_builder_append_date_time (bson_array_builder_t *bab, int64_t value);
204
205
206          bool
207          bson_array_builder_append_now_utc (bson_array_builder_t *bab);
208
209
210          bool
211          bson_array_builder_append_timestamp (bson_array_builder_t *bab,
212                                               uint32_t timestamp,
213                                               uint32_t increment);
214
215          bool
216          bson_array_builder_append_undefined (bson_array_builder_t *bab);
217
218          bool
219          bson_array_builder_append_array_builder_begin (bson_array_builder_t *bab,
220                                                         bson_array_builder_t **child);
221
222          bool
223          bson_array_builder_append_array_builder_end (bson_array_builder_t *bab,
224                                                       bson_array_builder_t *child);
225

AUTHOR

227       MongoDB, Inc
228
230       2017-present, MongoDB, Inc
231
232
233
234
2351.25.1                           Nov 08, 2023          BSON_ARRAY_BUILDER_T(3)
Impressum