MongoDB Collection
This page details the connection configuration for using a MongoDB Collection as a data sync source.
Overview
MongoDB is a scalable, flexible NoSQL document database platform known for its horizontal scaling and load balancing capabilities, which has given application developers an unprecedented level of flexibility and scalability.
Using MongoDB as a data source was added as part of Cinchy v5.5.
1. Considerations
Please review the following considerations prior to setting up your MongoDB Collection data sync source:
We currently only support SCRAM authentication (Mongo 4.0+).
Syncs are column based. This means that you must flatten the MongoDB source document prior to sync by using a projection (See section 2: Projection (JSON Object)).
The column names used in the source must match elements on the root object, with the exception of "$" which can be used to retrieve the full document.
By default, MongoDB batch size is 101.
By default, bulk operations size is 5000.
Due to a conversion of doubles to decimals that occurs during the sync process, minor data losses may occur.
The following data types are not supported:
Binary Data
Regular Expression
DBPointer
JavaScript
JavaScript code with scope
Symbol
Min Key
Max Key
The following data types are supported with conversions:
ObjectID is supported, but converted to string
Object is supported, but converted to JSON
Array is supported, but converted to JSON
Timestamp is supported, but converted to 64-bit integers
2. Basic Parameters
Input the following basic parameters for your MongoDB Collection source (Image 1):
Parameter | Description |
---|---|
Connection String | This is the encrypted connection string. You can review MongoDB's Connection String guide and parameter descriptions here. Do not include the /[database] in your connection URL. By default services like MongoDB Atlas will automatically include it when copying the connection string. If authenticating against a database other than the admin db, please provide the name of the database associated with the user’s credentials using the authSource parameter. Example (Default): mongodb+srv://<username>:<password>@<mongo host URI> Example (Against different database): mongodb+srv://<username>:<password>@<mongo host URI>?authSource=<authentication_db> |
Database | The name of the MongoDB database that contains the collection listed in the "Collection" parameter. Example: "blog" |
Collection | The name of your MongoDB collection. Example: "article" |
Type | The method for retrieving your data. This will be either: - db.collection.find(): This method is used to select documents in a collection when there is no need to transform (e.g. flatten or aggregate) the data. It is used for basic queries where query and projection are sufficient. - db.collection.aggregate(): This method is used when there is a need to transform the data in a collection. It is used for more complex scenarios with single or multi-stages pipelines. In general, you will yield the quickest performance by using the find method, unless you need a specific aggregation operator. |
Query (JSON Object) | A query for retrieving your data. This option appears if you have selected db.collection.find(). Example query. |
Projection (JSON Object) | This option appears if you have selected db.collection.find(). Syncs are column based. This means that you must flatten the MongoDB source document prior to sync using a projection. Example projection. |
Pipeline (JSON Array of Objects) | An aggregation pipeline consists of one or more stages that process documents. This option appears if you have selected db.collection.aggregate(). |
Example Query
Example Projection
Example Connections UI
3. Schema
Add in your applicable column(s) (Image 2). See the documentation here for further details on each column type.
Note that the Names field is Name is case sensitive and preserves spaces.
Geography and Geometry types are not supported by the MongoDB connector.
3.1 Data Types
The MongoDB Collection Data Source obtains BSON documents from MongoDB. BSON, short for Binary JSON, is a binary-encoded serialization of JSON-like documents. Like JSON, BSON supports the embedding of documents and arrays
within other documents and arrays. BSON also contains extensions that allow representation of data types that are not part of the JSON spec. For example BSON makes a distinction between Int32 and Int64.
The following table shows how MongoDB data types are translated in Cinchy.
MongoDB | Cinchy | Notes |
---|---|---|
Double | Number | Supported |
String | Text | Supported |
Object | Text (JSON) | Supported |
Array | Text (JSON) | Supported |
Binary Data | Binary | Unsupported |
ObjectId | Text | Supported |
Boolean | Bool | Supported |
Date | Date | Supported |
Null | - | Supported |
RegEx | - | Unsupported |
JavaScript | - | Unsupported |
Timestamp | Number | Supported |
32-bit Integer | Number | Supported |
64-bit Integer | Number | Supported |
Decimal28 | Number | Supported |
Min Key | - | Unsupported |
Max Key | - | Unsupported |
- | Geography | Unsupported |
- | Geometry | Unsupported |
Last updated