... | ... | @@ -22,20 +22,6 @@ ds.insert(laldb::makeArray { |
|
|
throw std::runtime_error("Insert failed!");
|
|
|
}
|
|
|
});
|
|
|
|
|
|
auto query = ds.find(laldb::makeObject{{ "age", laldb::Datastore::Func([](laldb::DataRepresentation const &o) {
|
|
|
return (o.value<laldb::Number>() <= 32);})
|
|
|
}});
|
|
|
|
|
|
query.skip(1).limit(4).launch([&] (laldb::Datastore::Error err, laldb::DataRepresentation docs) {
|
|
|
if (err == true || docs.isArray() == false) {
|
|
|
std::cerr << "ERROR : " << docs.value<laldb::String>() << std::endl;
|
|
|
return;
|
|
|
}
|
|
|
for (auto &doc : docs) {
|
|
|
std::cout << doc["name"].value<laldb::String>() << " " << doc["lastName"].value<laldb::String>() << " " << doc["age"].value<laldb::Number>() << std::endl;
|
|
|
}
|
|
|
});
|
|
|
```
|
|
|
|
|
|
|
... | ... | @@ -71,7 +57,21 @@ ds.insert(laldb::makeArray{ |
|
|
|
|
|
## count
|
|
|
|
|
|
You can count objects in your Datastore with a matching patern.
|
|
|
The callback's arguments :
|
|
|
- err : boolean
|
|
|
- count : it's the number of objects who matched with the patern.
|
|
|
|
|
|
```cpp
|
|
|
ds.count(laldb::makeObject { { "name", "paul" } },
|
|
|
[&] (laldb::Datastore::Error err, long count) {
|
|
|
if (err) {
|
|
|
std::cerr << doc.value<laldb::String>() << std::endl;
|
|
|
/* return or throw */
|
|
|
}
|
|
|
/* count is the number of objects who matched */
|
|
|
});
|
|
|
```
|
|
|
|
|
|
## find
|
|
|
|
... | ... | @@ -112,3 +112,31 @@ ds.findOne(laldb::makeObject { { "name", "paul" } }, |
|
|
```
|
|
|
|
|
|
## update
|
|
|
|
|
|
## query
|
|
|
|
|
|
If you want to use better rules for the function <i>find</i>, you can use queries.
|
|
|
you can stock the query <hen you use the same find more than one time.
|
|
|
You have access to :
|
|
|
- skip : take a number and skip the n first matched objects.
|
|
|
- where : take a DataRepresentation.
|
|
|
- limit : take a number an get the n first matched objects after the skiped objects.
|
|
|
- sort : .
|
|
|
- launch : take a callback. <b>docs</b> get all objects matched with all where DataRepresentation.
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
auto query = ds.find(laldb::makeObject{{ "age", laldb::Datastore::Func([](laldb::DataRepresentation const &o) {
|
|
|
return (o.value<laldb::Number>() <= 32);})
|
|
|
}});
|
|
|
|
|
|
query.skip(1).limit(4).launch([&] (laldb::Datastore::Error err, laldb::DataRepresentation docs) {
|
|
|
if (err == true || docs.isArray() == false) {
|
|
|
std::cerr << "ERROR : " << docs.value<laldb::String>() << std::endl;
|
|
|
return;
|
|
|
}
|
|
|
for (auto &doc : docs) {
|
|
|
std::cout << doc["name"].value<laldb::String>() << " " << doc["lastName"].value<laldb::String>() << " " << doc["age"].value<laldb::Number>() << std::endl;
|
|
|
}
|
|
|
});
|
|
|
``` |
|
|
\ No newline at end of file |