1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
#include "ejdb.h"
#include <locale.h>
static EJDB *jb;
int main() {
setlocale(LC_ALL, "en_US.UTF-8");
jb = ejdbnew();
if (!ejdbopen(jb, "addressbook", JBOWRITER | JBOCREAT | JBOTRUNC)) {
return 1;
}
//Get or create collection 'contacts'
EJCOLL *coll = ejdbcreatecoll(jb, "contacts", NULL);
bson bsrec;
bson_oid_t oid;
//One record
bson_init(&bsrec);
bson_append_string(&bsrec, "name", "John Travolta");
bson_append_string(&bsrec, "phone", "333-222-333");
bson_append_int(&bsrec, "age", 58);
bson_finish(&bsrec);
ejdbsavebson(coll, &bsrec, &oid);
fprintf(stderr, "\nSaved Travolta");
bson_destroy(&bsrec);
//Another record
bson_init(&bsrec);
bson_append_string(&bsrec, "name", "Bruce Willis");
bson_append_string(&bsrec, "phone", "222-333-222");
bson_append_int(&bsrec, "age", 57);
bson_finish(&bsrec);
ejdbsavebson(coll, &bsrec, &oid);
fprintf(stderr, "\nSaved Bruce Willis");
bson_destroy(&bsrec);
//Now select one record.
//Query: {'name' : {'$begin' : 'Bru'}} //Name starts with 'Bru' string
bson bq1;
bson_init_as_query(&bq1);
bson_append_start_object(&bq1, "name");
bson_append_string(&bq1, "$begin", "Bru");
bson_append_finish_object(&bq1);
bson_finish(&bq1);
EJQ *q1 = ejdbcreatequery(jb, &bq1, NULL, 0, NULL);
uint32_t count;
TCLIST *res = ejdbqryexecute(coll, q1, &count, 0, NULL);
fprintf(stderr, "\n\nRecords found: %d\n", count);
for (int i = 0; i < TCLISTNUM(res); ++i) {
void *bsdata = TCLISTVALPTR(res, i);
bson_print_raw(bsdata, 0);
}
fprintf(stderr, "\n");
//Dispose result set
tclistdel(res);
//Dispose query
ejdbquerydel(q1);
bson_destroy(&bq1);
//Close database
ejdbclose(jb);
ejdbdel(jb);
return 0;
}
|