MyNixOS website logo
Description

Query MongoDB.

Translate R code into MongoDB aggregation pipelines.

mongopipe

Lifecycle:experimental CRANstatus

The goal of mongopipe is to have a simple translator for R code into json based queries for Mongodb.

Installation

You can install the development version of mongopipe on gitlab with:

remotes::install_gitlab("illoRocks/mongopipe")

Example

library(mongopipe)
library(mongolite)
library(nycflights13)

m_flights <- mongo("test_flights", verbose = FALSE)
m_airports <- mongo("test_airports", verbose = FALSE)

if(!m_flights$count())
  m_flights$insert(flights)

if(!m_airports$count())
  m_airports$insert(airports)

result <- mongopipe() %>%
  match(faa="ABQ") %>%
  lookup(from = "test_flights", local_field = "faa", foreign_field = "dest") %>%
  unwind(field = "test_flights") %>%
  project(air_time="$test_flights.air_time", dep_delay="$test_flights.dep_delay", origin="$test_flights.origin") %>%
  m_airports$aggregate()

head(result)
#>                        _id air_time dep_delay origin
#> 1 5fe23ddb5a72ab3dc0076731      230        -6    JFK
#> 2 5fe23ddb5a72ab3dc0076731      238         9    JFK
#> 3 5fe23ddb5a72ab3dc0076731      251        -6    JFK
#> 4 5fe23ddb5a72ab3dc0076731      257        16    JFK
#> 5 5fe23ddb5a72ab3dc0076731      242         0    JFK
#> 6 5fe23ddb5a72ab3dc0076731      240        -2    JFK
pipe <- mongopipe() %>%
  match(faa="ABQ") %>%
  lookup(from = "test_flights", local_field = "faa", foreign_field = "dest") %>%
  unwind(field = "test_flights") %>%
  project(air_time="$test_flights.air_time", dep_delay="$test_flights.dep_delay", origin="$test_flights.origin")

print(pipe, pretty = 4)
#> [
#>     {
#>         "$match": {
#>             "faa": "ABQ"
#>         }
#>     },
#>     {
#>         "$lookup": {
#>             "from": "test_flights",
#>             "localField": "faa",
#>             "foreignField": "dest",
#>             "as": "test_flights"
#>         }
#>     },
#>     {
#>         "$unwind": "$test_flights"
#>     },
#>     {
#>         "$project": {
#>             "air_time": "$test_flights.air_time",
#>             "dep_delay": "$test_flights.dep_delay",
#>             "origin": "$test_flights.origin"
#>         }
#>     }
#> ]
Metadata

Version

0.1.1

License

Unknown

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows