listfields = TRUE for
src_duckdbdocdb_query() for duckdb 1.3.0
(e.g., use new json_tree function)src_sqlite, src_duckdb callsduckdb internal function for writing NDJSON to
filedocdb_query() modified so that it returns a data frame,
in which each column has just one type (atomic or list) across all the
rows of the respective column (previously, e.g. a mix of single-item
lists simplified to atomic values and of multi-item lists were
returned)docdb_create() and docdb_update() for
SQLite and PostgreSQL (only if on localhost) now import directly and
fast from ndjson files, in analogy to DuckDB (needs RSQLite
>= 2.3.7.9014)docdb_update() for
src_couchdb()docdb_create() if a data frame has
column names with a dot(s) since dots in nodbi are used for
JSON dot pathsduckdb 1.11.0 for refactoring of
docdb_query(), accelerating queriesdocdb_query(), accelerating
queries up to 20-fold for SQLite, DuckDB, and accelerating
listfields = TRUE several times for DuckDBdocdb_query() not working for cases when dot
paths had no counts between fields$regex in docdb_query() is
case-sensitivedocdb_query(src, key, query, listfields = TRUE, limit = <integer>)limit in
docdb_query(src, key, query, listfields = TRUE, limit = <integer>)
and speed updocdb_query and
docdb_updateNULL also for all MongoDB returnsJSON with Elasticsearch in
docdb_updatedocdb_querydocdb_get() work again for
src_sqlite() by casting JSONB back to
JSONquery now triggers a warning as it
should be a valid JSON string; change query = "" into
query = "{}"JSONB functions in
SQLite 3.45.0 (RSQLite >= 2.3.4.9005)docdb_create() to speed up handling
large data frames and listsdocdb_create() and other functionsdocdb_update() now reports which records failed to
update and then continuesdocdb_delete() now returns harmonised success logical
value across backendsdocdb_query() reimplementation to have the same
functionality across all databases (DuckDB, SQLite, PostgreSQL, MongoDB,
Elasticsearch, CouchDB); even though the API and unit tests remained,
user provisions may break e.g. to handle return values of databases that
previously were incompletely implemented (in particular Elasticsearch
and CouchDB). Details:
query can now be complex (nested, various operators)
and is digested with a Javascript helperfields can now be nested fields (e.g.,
friends.name) to directly return values lifted from the
nested fieldlistfields parameter newly implemented to return dot
paths for all fields of all or selected documents in collectionjq via jqr for mangling
parameters, selecting documents, filtering fields and lifting nested
field valuesNULL (previously some
backends returned an empty data frame)docdb_query(src, key, query = "{}", fields = "{}") now
delegates to docdb_get(src, key)_id is always returned, unless specified with
"_id": 0 in parameter fieldsscr_postgres, only fewer than 50 fields if any can
be specified in fieldssrc_sqlite, minimise the use of the time-costly
json_treedocdb_query()docdb_*() functionsdocdb_update() to directly use NDJSON from file
for duckdbdocdb_create()src_duckdb()docdb_query()docdb_query.src_duckdb()httpbin with
webfakesdocdb_query()docdb_query() with
src_duckdb()docdb_update() now can do bulk updates when _id’s are
in value (for SQLite, DuckDB, PostgreSQL, MongoDB; not yet
for CouchDB and Elastic)src_duckdb() handles when json_type returns NULL for
non-existing pathsrc_sqlite() handles when text includes double
quotation marksdocdb_exists() for
src_mongo(), and of docdb_query() for SQL
databasesdocdb_query()isa() as not available with R version 3.xdocdb_update.src_couchdb() to use
jqrdocdb_create to accept jsonlite,
jsonify, jqr JSONdocdb_query() to account for change in SQLite
3.38.3 adding quotation of labels (closes issue #44), test addeddocdb_query() work for PostgreSQL when a string
used with the $in operator has a comma(s), test addeddocdb_create() now supports file names and http urls as
argument value for importing datadocdb_create() (and thus docdb_update())
now supports quantifiers (e.g., ‘[a-z]{2,3}’) in regular
expressionsFALSE like other backends when using
docdb_delete() for a non-existing container (table, in the
case of SQLite)docdb_*() functions so that
query and fields parameters can be used across
database backendsdocdb_list() added as function to list container in
databasedocdb_*() functions return a logical
indicating the success of the function (docdb_create,
docdb_delete), or a data frame (docdb_get,
docdb_query), or the number of documents affected by the
function (docdb_update)docdb_get() to not return ’_id’ field for
src_{sqlite,mongo} since already used for row namesdocdb_query.src_sqlite() now handles JSON objects,
returning nested lists (#40)src_sqlite() now uses transactions for relevant
functions (#39)docdb_update.src_mongo() now returns the number of
upserted or matched documents, irrespective of whether they were updated
or notdocdb_get() to not return ’_id’ field for
src_{sqlite,mongo} since already used for row namessrc_couchdb(): we were not setting user and
password correctly internally, was causing issues in CouchDB v3 (#35)
thanks to @drtagkim
for the pull requestdocdb_query() and docdb_get(), for
sqlite source, use a connection instead of a regular file path to avoid
certain errors on Windows (#33) work by @rfhbdocdb_query() and docdb_create() for
sqlite source, fix to handle mixed values of different types (#34) work
by @rfhbsrc_sqlite,
print.src_sqlite, docdb_create.src_sqlite,
docdb_delete.src_sqlite,
docdb_exists.src_sqlite, docdb_get.src_sqlite,
docdb_query.src_sqlite, and
docdb_update.src_sqlite. includes new dataset
contacts (#25) (#27) (#28) (#29) (#30) (#31)docdb_update gains method for working with MongoDB, via
(#27).github files in the source repository to
facilitate contributionssrc_mongo changes, improved behavior, via (#27)etcd (via the etseed package) integration
has been removed from this package as etcd doesn’t really fit the main
goal of the pkg. functions now defunct are: src_etcd,
docdb_create.src_etcd, docdb_delete.src_etcd,
docdb_exists.src_etcd, docdb_get.src_etcd, and
print.src_etcd (#26)docdb_get() gains limit parameter to do
pagination, for CouchDB, Elasticsearch and MongoDB only (#17) (#23)docdb_query() to send queries to each
backend (#18) (#22)docdb_exists() to check if a database or
equivalent exists (#21) (#22)elastic, which has
slightly different setup for connecting to the Elasticsearch instance
(#20)