
Query a database.
db_query(cushion, dbname, query = NULL, selector = NULL, limit = NULL,
skip = NULL, sort = NULL, fields = NULL, use_index = NULL,
as = "list", ...)
A Cushion
object. Required.
Database name
(character) instead of using the other parameters, you can compose one R list or json blob here
(json) - JSON object describing criteria used to select
documents. More information provided in the section on selector syntax.
See the query_tutorial
in this package, and the selectors docs
http://docs.couchdb.org/en/2.0.0/api/database/find.html#find-selectors
(number) - Maximum number of results returned. Default is 25. Optional
(number) - Skip the first 'n' results, where 'n' is the value specified. Optional
(json) - JSON array following sort syntax. Optional. See http://docs.couchdb.org/en/2.0.0/api/database/find.html#find-sort For some reason, sort doesn't work often, not sure why.
(json) - JSON array specifying which fields of each object should be returned. If it is omitted, the entire object is returned. More information provided in the section on filtering fields. Optional See http://docs.couchdb.org/en/2.0.0/api/database/find.html#find-filter
(json) - Instruct a query to use a specific index.
Specified either as <design_document>
or ["<design_document>", "<index_name>"]
. Optional
(character) One of list (default) or json
Curl args passed on to HttpClient
JSON as a character string or a list (determined by the
as
parameter)
# NOT RUN {
## create a connection
(x <- Cushion$new())
file <- system.file("examples/omdb.json", package = "sofa")
strs <- readLines(file)
## create a database
if ("omdb" %in% db_list(x)) {
invisible(db_delete(x, dbname="omdb"))
}
db_create(x, dbname='omdb')
## add some documents
invisible(db_bulk_create(x, "omdb", strs))
## query all in one json blob
db_query(x, dbname = "omdb", query = '{
"selector": {
"_id": {
"$gt": null
}
}
}')
## query with each parameter
db_query(x, dbname = "omdb",
selector = list(`_id` = list(`$gt` = NULL)))
db_query(x, dbname = "omdb",
selector = list(`_id` = list(`$gt` = NULL)), limit = 3)
# fields
## single field works
db_query(x, dbname = "omdb",
selector = list(`_id` = list(`$gt` = NULL)), limit = 3,
fields = c('_id', 'Actors', 'imdbRating'))
## as well as many fields
db_query(x, dbname = "omdb",
selector = list(`_id` = list(`$gt` = NULL)), limit = 3,
fields = '_id')
## other queries
db_query(x, dbname = "omdb",
selector = list(Year = list(`$gt` = "2013")))
db_query(x, dbname = "omdb", selector = list(Rated = "R"))
db_query(x, dbname = "omdb",
selector = list(Rated = "PG", Language = "English"))
db_query(x, dbname = "omdb", selector = list(
`$or` = list(
list(Director = "Jon Favreau"),
list(Director = "Spike Lee")
)
), fields = c("_id", "Director"))
## when selector vars are of same name, use a JSON string
## b/c R doesn't let you have a list with same name slots
db_query(x, dbname = "omdb", query = '{
"selector": {
"Year": {"$gte": "1990"},
"Year": {"$lte": "2000"},
"$not": {"Year": "1998"}
},
"fields": ["_id", "Year"]
}')
## regex
db_query(x, dbname = "omdb", selector = list(
Director = list(`$regex` = "^R")
), fields = c("_id", "Director"))
# }
Run the code above in your browser using DataLab