tMongoDBInput - 6.3

Talend Open Studio for Big Data Components Reference Guide

EnrichVersion
6.3
EnrichProdName
Talend Open Studio for Big Data
task
Data Governance
Data Quality and Preparation
Design and Development
EnrichPlatform
Talend Studio

Function

tMongoDBInput retrieves certain documents from a MongoDB database collection by supplying a query document containing the fields the desired documents should match.

Purpose

This component allows you to retrieve records from a collection in the MongoDB database and transfer them to the following component for display or storage.

tMongoDBInput Properties

Component family

Big Data / MongoDB

 

Basic settings

Use existing connection

Select this check box and in the Component List click the relevant connection component to reuse the connection details you already defined.

 

DB Version

List of the database versions.

Available when the Use existing connection check box is not selected.

 

Use replica set address

Select this check box to show the Replica address table.

In the Replica address table, you can define multiple MongoDB database servers for failover.

Available when the Use existing connection check box is not selected.

 

Server and Port

IP address and listening port of the database server.

Available when the Use existing connection or Use replica set address check box is not selected.

 

Database

Name of the database.

 

Use SSL connection

Select this check box to enable the SSL or TLS encrypted connection.

Then you need to use the tSetKeystore component in the same Job to specify the encryption information.

For further information about tSetKeystore, see tSetKeystore.

Note that the SSL connection is available only for the version 2.4 + of MongoDB.

 

Set read preference

Select this check box and from the Read preference drop-down list that is displayed, select the member to which you need to direct the read operations.

If you leave this check box clear, the Job uses the default Read preference, that is to say, uses the primary member in a replica set.

For further information, see MongoDB's documentation about Replication and its Read preferences.

 

Required authentication

Select this check box to enable the database authentication.

The Authentication mechanism drop-down list becomes available. Among the listed mechanisms, the NEGOTIATE one is recommended if you are not using Kerberos, because it automatically select the authentication mechanism the most adapted to the MongoDB version you are using.

For details about the other mechanisms in this list, see MongoDB Authentication from the MongoDB documentation.

 

Set Authentication database

If the username to be used to connect to MongoDB has been created in a specific Authentication database of MongoDB, select this check box to enter the name of this Authentication database in the Authentication database field that is displayed.

For further information about the MongoDB Authentication database, see User Authentication database.

Username and Password

DB user authentication data.

To enter the password, click the [...] button next to the password field, and then in the pop-up dialog box enter the password between double quotes and click OK to save the settings.

Available when the Required authentication check box is selected.

If the security system you have selected from the Authentication mechanism drop-down list is Kerberos, you need to enter the User principal, the Realm and the KDC server fields instead of the Username and the Password fields.

 

Collection

Name of the collection in the MongoDB database.

 

Schema and Edit Schema

A schema is a row description. It defines the number of fields (columns) to be processed and passed on to the next component. The schema is either Built-In or stored remotely in the Repository.

Click Edit schema to make changes to the schema. If the current schema is of the Repository type, three options are available:

  • View schema: choose this option to view the schema only.

  • Change to built-in property: choose this option to change the schema to Built-in for local changes.

  • Update repository connection: choose this option to change the schema stored in the repository and decide whether to propagate the changes to all the Jobs upon completion. If you just want to propagate the changes to the current Job, you can select No upon completion and choose this schema metadata again in the [Repository Content] window.

If a column in the database is a JSON document and you need to read the entire document, put an asterisk (*) in the DB column column, without quotation marks around.

 

Query

Specify the query condition. This field is available only when you have selected Find query from the Query type drop-down list.

For example, type in "{id:4}" to retrieve the record whose id is 4 from the collection specified in the Collection field.

Note

Different from the query statements required in the MongoDB client software, the query here refers to the contents inside find(), such as the query here {id:4} versus the MongoDB client query db.blog.find({id:4}).

 

Aggregation stages

Create a MongoDB aggregation pipeline by adding the stages you want the documents to pass through so as to obtain aggregated results from these documents. This table is available only when you have selected Aggregation pipeline query from the Query type drop-down list.

Only one stage is allowed per row in this Aggregation stages table and the stages are executed one by one in the order you place them in this table.

For example, if you want to aggregate documents about your customers using the $match and the $group stages, you need to add two rows to this Aggregation stages table and define the two stages as follows:

"{$match : {status : 'A'}}"
"{$group : {_id : '$cust_id', total : {$sum : '$amount'}}}"

In this aggregation, the customer documents with status A are selected; then among the selected customers, those using the same customer id are grouped and the values from the amount fields of the same customer are summed up.

For a full list of the stages you can use and their related operators, see Aggregation pipeline operators.

For further information about MongoDB aggregation pipeline, see Aggregation pipeline.

 

Mapping

Each column of the schema defined for this component represents a field of the documents to be read. In this table, you need to specify the parent nodes of these fields, if any.

For example, in the document reading as follows

{
               _id: ObjectId("5099803df3f4948bd2f98391"),
               person: { first: "Joe", last: "Walker" }
            }

The first and the last fields have person as their parent node but the _id field does not have any parent node. So once completed, this Mapping table should read as follows:

Column     Parent node path
_id
first       "person"
last        "person"
 

Sort by

Specify the column and choose the order for the sort operation.

This field is available only when you have selected Find query from the Query type drop-down list.

 

Limit

Type in the maximum number of records to be retrieved.

This field is available only when you have selected Find query from the Query type drop-down list.

Advanced settings

tStatCatcher Statistics

Select this check box to collect the log data at the component level.

 

No query timeout

Select this check box to prevent MongoDB servers from stopping idle cursors at the end of 10-minute inactivity of these cursors. In this situation, an idle cursor will stay open until either the results of this cursor are exhausted or you manually close it using the cursor.close() method.

A cursor for MongoDB is a pointer to the result set of a query. By default, that is to say, with this check box being clear, a MongoDB server automatically stops idle cursors after a given inactivity period to avoid excess memory use. For further information about MongoDB cursors, see https://docs.mongodb.org/manual/core/cursors/.

 

Enable external sort

Since the aggregation pipeline stages have a maximum memory use limit (100 megabytes) and a stage exceeding this limit will produce errors, when handling large datasets, select this check box to avoid aggregation stages exceeding this limit.

For further information about this external sort, see Large sort operation with external sort.

Global Variables

NB_LINE: the number of rows read by an input component or transferred to an output component. This is an After variable and it returns an integer.

ERROR_MESSAGE: the error message generated by the component when an error occurs. This is an After variable and it returns a string. This variable functions only if the Die on error check box is cleared, if the component has this check box.

A Flow variable functions during the execution of a component while an After variable functions after the execution of the component.

To fill up a field or expression with a variable, press Ctrl + Space to access the variable list and choose the variable to use from it.

For further information about variables, see Talend Studio User Guide.

Usage

As a start component, tMongoDBInput allows you to retrieve records from a collection in the MongoDB database and transfer them to the following component for display or storage.

Log4j

If you are using a subscription-based version of the Studio, the activity of this component can be logged using the log4j feature. For more information on this feature, see Talend Studio User Guide.

For more information on the log4j logging levels, see the Apache documentation at http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html.

Scenario: Retrieving data from a collection by advanced queries

In this scenario, advanced MongoDB queries are used to retrieve the post by the author Anderson.

There are such posts in the collection blog of the MongoDB database talend:

To insert data into the database, see Scenario 1: Creating a collection and writing data to it.

Linking the components

  1. Drop tMongoDBConnection, tMongoDBClose, tMongoDBInput and tLogRow onto the workspace.

  2. Link tMongoDBConnection to tMongoDBInput using the OnSubjobOk trigger.

  3. Link tMongoDBInput to tMongoDBClose using the OnSubjobOk trigger.

  4. Link tMongoDBInput to tLogRow using a Row > Main connection.

Configuring the components

  1. Double-click tMongoDBConnection to open its Basic settings view.

  2. From the DB Version list, select the MongoDB version you are using.

  3. In the Server and Port fields, enter the connection details.

  4. In the Database field, enter the name of the MongoDB database.

  5. Double-click tMongoDBInput to open its Basic settings view.

  6. Select the Use existing connection option.

  7. In the Collection field, enter the name of the collection, namely blog.

  8. Click the [...] button next to Edit schema to open the schema editor.

  9. Click the [+] button to add five columns, namely id, author, title, keywords and contents, with the type as Integer and String respectively.

  10. Click OK to close the editor.

  11. The columns now appear in the left part of the Mapping area.

  12. For columns author, title, keywords and contents, enter their parent node post so that the data can be retrieved from the correct positions.

  13. In the Query box, enter the advanced query statement to retrieve the posts whose author is Anderson:

    "{post.author : 'Anderson'}"

    This statement requires that the sub-node of post, the node author, should have the value "Anderson".

  14. Double-click tLogRow to open its Basic settings view.

    Select Table (print values in cells of a table) for a better display of the results.

Executing the Job

  1. Press Ctrl+S to save the Job.

  2. Press F6 to run the Job.

    As shown above, the post by Anderson is retrieved.