```{r echo=FALSE} library("knitr") hook_output <- knitr::knit_hooks$get("output") knitr::knit_hooks$set(output = function(x, options) { lines <- options$output.lines if (is.null(lines)) { return(hook_output(x, options)) # pass to default hook } x <- unlist(strsplit(x, "\n")) more <- "..." if (length(lines)==1) { # first n lines if (length(x) > lines) { # truncate the output, but add .... x <- c(head(x, lines), more) } } else { x <- c(if (abs(lines[1])>1) more else NULL, x[lines], if (length(x)>lines[abs(length(lines))]) more else NULL ) } # paste these lines together x <- paste(c(x, ""), collapse = "\n") hook_output(x, options) })
knitr::opts_chunk$set( comment = "#>", collapse = TRUE, warning = FALSE, message = FALSE )
`nodbi` provides a single UI for interacting with many NoSQL databases.
So far we support the following DBs:
* MongoDB
* Redis (server and serverless)
* CouchDB
* Elasticsearch
* etcd
* Riak
Currently we have support for data.frame's for the following operations
* Create - all DBs
* Get - all DBs
* Delete - all DBs
* Update - just CouchDB (others coming)
`sofa`, `mongolite`, `elastic`, and `etseed` are on CRAN
`RedisAPI`, `rrlite`, `reeack` are not on CRAN
## Install
```{r eval=FALSE}
install.packages("devtools")
devtools::install_github("ropensci/nodbi")
library("nodbi")
Start CouchDB in your shell of choice by, e.g.: couchdb
src_couchdb()
Start Elaticsearch in your shell of choice by, e.g.:
cd /usr/local/elasticsearch && bin/elasticsearch
src_elasticsearch()
Start etcd in your shell of choice after installing etcd (https://github.com/coreos/etcd/releases/tag/v2.2.0) by, e.g.: etcd
src_etcd()
Start MongoDB in your shell of choice by: mongod
src_mongo()
If you want to use classic Redis server, we do that through the RedisAPi
package, and you'll need to start up Redis by e.g,. redis-server
in your shell.
```{r output.lines=1:10} src_redis()
But if you want to use serverless Redis via [rlite][rlite], we do that through using
with the [rrlite][rrlite] R package - and no need to start a server, of course.
```{r output.lines=1:10}
src_rlite()
Start your Riak server, then:
src_riak()
src <- src_couchdb()
docout <- docdb_create(src, key = "mtcars", value = mtcars)
head( docdb_get(src, "mtcars") )
```{r echo=FALSE} src <- src_etcd() invisible(docdb_delete(src, "/mtcars"))
```{r}
src <- src_etcd()
ff <- docdb_create(src, "/mtcars", mtcars)
head( docdb_get(src, "/mtcars") )
Put the iris
dataset into ES
```{r echo=FALSE} src <- src_elasticsearch() if (elastic::index_exists("iris")) invisible(docdb_delete(src, "iris"))
```{r eval=FALSE}
src <- src_elasticsearch()
ff <- docdb_create(src, "iris", iris)
head( docdb_get(src, "iris") )
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> 5.0 3.6 1.4 0.2 setosa
#> 4.9 3.1 1.5 0.1 setosa
#> 4.8 3.4 1.6 0.2 setosa
#> 5.4 3.9 1.3 0.4 setosa
#> 5.1 3.3 1.7 0.5 setosa
#> 5.2 3.4 1.4 0.2 setosa
```{r output.lines=1:10} library("ggplot2") src <- src_mongo(verbose = FALSE) ff <- docdb_create(src, "diamonds", diamonds) docdb_get(src, "diamonds")
## Redis
```{r}
src <- src_rlite()
docdb_create(src, "mtcars", mtcars)
```{r output.lines=1:10} docdb_get(src, "mtcars")
## Riak
```{r echo=FALSE}
src <- src_riak()
invisible(docdb_delete(src, "iris"))
src <- src_riak()
docdb_create(src, "iris", iris)
library("dplyr")
src <- src_mongo(verbose = FALSE)
docdb_get(src, "diamonds") %>%
group_by(cut) %>%
summarise(mean_depth = mean(depth), mean_price = mean(price))
nodbi
in R doing citation(package = 'nodbi')
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.