Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jeroen/mongolite
Fast and Simple MongoDB Client for R
https://github.com/jeroen/mongolite
Last synced: 20 days ago
JSON representation
Fast and Simple MongoDB Client for R
- Host: GitHub
- URL: https://github.com/jeroen/mongolite
- Owner: jeroen
- Created: 2014-09-22T22:27:57.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2024-04-24T13:47:42.000Z (8 months ago)
- Last Synced: 2024-06-11T16:12:18.425Z (6 months ago)
- Language: C
- Homepage: https://jeroen.github.io/mongolite/
- Size: 7.22 MB
- Stars: 284
- Watchers: 18
- Forks: 64
- Open Issues: 77
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
- awesome-mongodb - mongolite - Fast and simple client for R (Libraries / R)
- awesome-mongodb - mongolite - Fast and simple client for R (Libraries / R)
README
# mongolite
##### *Fast and Simple MongoDB Client for R*
[![CRAN_Status_Badge](http://www.r-pkg.org/badges/version/mongolite)](http://cran.r-project.org/package=mongolite)
[![CRAN RStudio mirror downloads](http://cranlogs.r-pkg.org/badges/mongolite)](http://cran.r-project.org/web/packages/mongolite/index.html)
[![Research software impact](http://depsy.org/api/package/cran/mongolite/badge.svg)](http://depsy.org/package/r/mongolite)> High-level, high-performance MongoDB client based on libmongoc and
jsonlite. Includes support for aggregation, indexing, map-reduce, streaming,
SSL encryption and SASL authentication. The vignette gives a brief overview
of the available methods in the package.## Documentation
About the R package:
- Book: [Mongolite User Manual](https://jeroen.github.io/mongolite/)
- Presentation: [UseR 2015 slides](http://jeroen.github.io/mongo-slides/)## Hello World
Example using a public test server
```r
con <- mongo("mtcars", url =
"mongodb+srv://readwrite:[email protected]/test")# Wipe collection
if(con$count() > 0)
con$drop()
# Insert some data
con$insert(mtcars)
stopifnot(con$count() == nrow(mtcars))# Query data
mydata <- con$find()
stopifnot(all.equal(mydata, mtcars))
con$drop()# Automatically disconnect when connection is removed
rm(con)
gc()
```Insert/retrieve data from your local mongodb server:
```r
# Init connection to local mongod
library(mongolite)
m <- mongo(collection = "diamonds")# Insert test data
data(diamonds, package="ggplot2")
m$insert(diamonds)# Check records
m$count()
nrow(diamonds)# Perform a query and retrieve data
out <- m$find('{"cut" : "Premium", "price" : { "$lt" : 1000 } }')# Compare
nrow(out)
nrow(subset(diamonds, cut == "Premium" & price < 1000))
```More advanced features include map reduce:
```r
# Cross-table
tbl <- m$mapreduce(
map = "function(){emit({cut:this.cut, color:this.color}, 1)}",
reduce = "function(id, counts){return Array.sum(counts)}"
)
# Same as:
data.frame(with(diamonds, table(cut, color)))
```Importing and exporting json or bson data:
```r
# Stream jsonlines into a connection
tmp <- tempfile()
m$export(file(tmp))# Stream it back in R
library(jsonlite)
mydata <- stream_in(file(tmp))# Or into mongo
m2 <- mongo("diamonds2")
m2$count()
m2$import(file(tmp))
m2$count()# Remove the collection
m$drop()
m2$drop()
```## Installation
Binary packages for __OS-X__ or __Windows__ can be installed directly from CRAN:
```r
install.packages("mongolite")
```Installation from source on Linux requires `openssl` and `Cyrus SASL` (**not** `GNU sasl`). On __Debian__ or __Ubuntu__ use [libssl-dev](https://packages.debian.org/testing/libssl-dev) and [libsasl2-dev](https://packages.debian.org/testing/libsasl2-dev):
```
sudo apt-get install -y libssl-dev libsasl2-dev
```On __Fedora__, __CentOS or RHEL__ use [openssl-devel](https://apps.fedoraproject.org/packages/openssl-devel) and [cyrus-sasl-devel](https://apps.fedoraproject.org/packages/cyrus-sasl-devel):
```
sudo yum install openssl-devel cyrus-sasl-devel
````