docdb_query for src_sqlite when using $in with strings in queryjsonb_tree as available since RSQLite version 2.4.4json_tree for src_duckdb for listfields = TRUEdocdb_update for ndjson files with duplicate _id's or target rowslistfields = 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)