The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
rlowdb
is a lightweight, JSON-based database for R,
inspired by LowDB from
JavaScript. It provides a simple and efficient way to store, retrieve,
update, and delete structured data without the need for a full database
system.
rlowdb
is not yet available on CRAN, but you can install
it from GitHub:
::install_github("feddelegrand7/rlowdb") devtools
To start using `rlowdb``, create a new database instance by specifying a JSON file:
library(rlowdb)
<- rlowdb$new("DB.json") db
The insert
method takes two parameters, a
collection
and a record
, think of the
collection
parameter as a table
in the
SQL world. Think of the record
parameter
as a list
of names, each name/value pair representing a
specific column and it’s value.
Add records to a collection:
$insert(
dbcollection = "users",
record = list(id = 1, name = "Alice", age = 30)
)$insert(
dbcollection = "users",
record = list(id = 2, name = "Bob", age = 25)
)
$insert(
dbcollection = "users",
record = list(id = 3, name = "Alice", age = 30)
)
Get all stored data:
$get_data()
db#> $users
#> $users[[1]]
#> $users[[1]]$id
#> [1] 1
#>
#> $users[[1]]$name
#> [1] "Alice"
#>
#> $users[[1]]$age
#> [1] 30
#>
#>
#> $users[[2]]
#> $users[[2]]$id
#> [1] 2
#>
#> $users[[2]]$name
#> [1] "Bob"
#>
#> $users[[2]]$age
#> [1] 25
#>
#>
#> $users[[3]]
#> $users[[3]]$id
#> [1] 3
#>
#> $users[[3]]$name
#> [1] "Alice"
#>
#> $users[[3]]$age
#> [1] 30
Find a specific record:
$find(collection = "users", key = "id", value = 1)
db#> [[1]]
#> [[1]]$id
#> [1] 1
#>
#> [[1]]$name
#> [1] "Alice"
#>
#> [[1]]$age
#> [1] 30
Modify existing records:
$update(
dbcollection = "users",
key = "id",
value = 1,
new_data = list(age = 31)
)
$get_data()
db#> $users
#> $users[[1]]
#> $users[[1]]$id
#> [1] 1
#>
#> $users[[1]]$name
#> [1] "Alice"
#>
#> $users[[1]]$age
#> [1] 31
#>
#>
#> $users[[2]]
#> $users[[2]]$id
#> [1] 2
#>
#> $users[[2]]$name
#> [1] "Bob"
#>
#> $users[[2]]$age
#> [1] 25
#>
#>
#> $users[[3]]
#> $users[[3]]$id
#> [1] 3
#>
#> $users[[3]]$name
#> [1] "Alice"
#>
#> $users[[3]]$age
#> [1] 30
The upsert
methods allows you to update a record if it
exists, otherwise, it will be inserted:
$upsert(
dbcollection = "users",
key = "id",
value = 1,
new_data = list(age = 25)
)
$get_data()
db#> $users
#> $users[[1]]
#> $users[[1]]$id
#> [1] 1
#>
#> $users[[1]]$name
#> [1] "Alice"
#>
#> $users[[1]]$age
#> [1] 25
#>
#>
#> $users[[2]]
#> $users[[2]]$id
#> [1] 2
#>
#> $users[[2]]$name
#> [1] "Bob"
#>
#> $users[[2]]$age
#> [1] 25
#>
#>
#> $users[[3]]
#> $users[[3]]$id
#> [1] 3
#>
#> $users[[3]]$name
#> [1] "Alice"
#>
#> $users[[3]]$age
#> [1] 30
$upsert(
dbcollection = "users",
key = "id",
value = 100,
new_data = list(age = 25)
)
$get_data()
db#> $users
#> $users[[1]]
#> $users[[1]]$id
#> [1] 1
#>
#> $users[[1]]$name
#> [1] "Alice"
#>
#> $users[[1]]$age
#> [1] 25
#>
#>
#> $users[[2]]
#> $users[[2]]$id
#> [1] 2
#>
#> $users[[2]]$name
#> [1] "Bob"
#>
#> $users[[2]]$age
#> [1] 25
#>
#>
#> $users[[3]]
#> $users[[3]]$id
#> [1] 3
#>
#> $users[[3]]$name
#> [1] "Alice"
#>
#> $users[[3]]$age
#> [1] 30
#>
#>
#> $users[[4]]
#> $users[[4]]$id
#> [1] 100
#>
#> $users[[4]]$age
#> [1] 25
$delete(collection = "users", key = "id", value = 100)
db
$get_data()
db#> $users
#> $users[[1]]
#> $users[[1]]$id
#> [1] 1
#>
#> $users[[1]]$name
#> [1] "Alice"
#>
#> $users[[1]]$age
#> [1] 25
#>
#>
#> $users[[2]]
#> $users[[2]]$id
#> [1] 2
#>
#> $users[[2]]$name
#> [1] "Bob"
#>
#> $users[[2]]$age
#> [1] 25
#>
#>
#> $users[[3]]
#> $users[[3]]$id
#> [1] 3
#>
#> $users[[3]]$name
#> [1] "Alice"
#>
#> $users[[3]]$age
#> [1] 30
Find users older than 25:
$query(collection = "users", condition = "age > 25")
db#> [[1]]
#> [[1]]$id
#> [1] 3
#>
#> [[1]]$name
#> [1] "Alice"
#>
#> [[1]]$age
#> [1] 30
Query with multiple conditions:
$query(collection = "users", condition = "age > 20 & id > 1")
db#> [[1]]
#> [[1]]$id
#> [1] 2
#>
#> [[1]]$name
#> [1] "Bob"
#>
#> [[1]]$age
#> [1] 25
#>
#>
#> [[2]]
#> [[2]]$id
#> [1] 3
#>
#> [[2]]$name
#> [1] "Alice"
#>
#> [[2]]$age
#> [1] 30
The list_collections
method returns the names of the
collections within your DB:
$list_collections()
db#> [1] "users"
Using the count
method, you can get the number of
records a collection has:
$count(collection = "users")
db#> [1] 3
It possible to verify if a collection
, a
key
or a value
exists within your
DB
:
$exists_collection(collection = "users")
db#> [1] TRUE
$exists_collection(collection = "nonexistant")
db#> [1] FALSE
$exists_key(collection = "users", key = "name")
db#> [1] TRUE
$exists_value(
dbcollection = "users",
key = "name",
value = "Alice"
)#> [1] TRUE
$exists_value(
dbcollection = "users",
key = "name",
value = "nonexistant"
)#> [1] FALSE
It is possible to clear
a collection. This will remove
all the elements belonging to the collection but not drop the collection
it self:
$insert(collection = "countries", record = list(id = 1, country = "Algeria", continent = "Africa"))
db
$insert(collection = "countries", record = list(id = 1, country = "Germany", continent = "Europe"))
db
$get_data()
db#> $users
#> $users[[1]]
#> $users[[1]]$id
#> [1] 1
#>
#> $users[[1]]$name
#> [1] "Alice"
#>
#> $users[[1]]$age
#> [1] 25
#>
#>
#> $users[[2]]
#> $users[[2]]$id
#> [1] 2
#>
#> $users[[2]]$name
#> [1] "Bob"
#>
#> $users[[2]]$age
#> [1] 25
#>
#>
#> $users[[3]]
#> $users[[3]]$id
#> [1] 3
#>
#> $users[[3]]$name
#> [1] "Alice"
#>
#> $users[[3]]$age
#> [1] 30
#>
#>
#>
#> $countries
#> $countries[[1]]
#> $countries[[1]]$id
#> [1] 1
#>
#> $countries[[1]]$country
#> [1] "Algeria"
#>
#> $countries[[1]]$continent
#> [1] "Africa"
#>
#>
#> $countries[[2]]
#> $countries[[2]]$id
#> [1] 1
#>
#> $countries[[2]]$country
#> [1] "Germany"
#>
#> $countries[[2]]$continent
#> [1] "Europe"
Now, look what happened when we use the clear
method on
the countries
collection:
$clear("countries")
db
$get_data()
db#> $users
#> $users[[1]]
#> $users[[1]]$id
#> [1] 1
#>
#> $users[[1]]$name
#> [1] "Alice"
#>
#> $users[[1]]$age
#> [1] 25
#>
#>
#> $users[[2]]
#> $users[[2]]$id
#> [1] 2
#>
#> $users[[2]]$name
#> [1] "Bob"
#>
#> $users[[2]]$age
#> [1] 25
#>
#>
#> $users[[3]]
#> $users[[3]]$id
#> [1] 3
#>
#> $users[[3]]$name
#> [1] "Alice"
#>
#> $users[[3]]$age
#> [1] 30
#>
#>
#>
#> $countries
#> list()
Using the drop
method, one can drop a whole
collection:
$drop(collection = "countries")
db$get_data()
db#> $users
#> $users[[1]]
#> $users[[1]]$id
#> [1] 1
#>
#> $users[[1]]$name
#> [1] "Alice"
#>
#> $users[[1]]$age
#> [1] 25
#>
#>
#> $users[[2]]
#> $users[[2]]$id
#> [1] 2
#>
#> $users[[2]]$name
#> [1] "Bob"
#>
#> $users[[2]]$age
#> [1] 25
#>
#>
#> $users[[3]]
#> $users[[3]]$id
#> [1] 3
#>
#> $users[[3]]$name
#> [1] "Alice"
#>
#> $users[[3]]$age
#> [1] 30
Finally, drop_all
will drop all the
collections
within your DB
:
$drop_all()
db$get_data()
db#> named list()
rlowdb
provides error handling for common issues. For
example, attempting to update a collection that does not exist will
result in an informative error:
$update(
dbcollection = "nonexistant",
key = "id",
value = 1,
new_data = list(age = 40)
) #> Error in private$.find_index_by_key(collection, key, value): Error: Collection 'nonexistant' does not exist.
Please note that the ralger project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.