SSIS MongoDB Source Adapter (Bulk Extract,Read,Copy NoSQL Data)
PreviousNext

MongoDB Source can be used to extract large amount of data from MongoDB Database. This component supports SQL like query language to query MongoDB data without worrying about complex API or proprietary query language. MongoDB is an open-source document database, and the most popular NoSQL database out there.

Download SSIS PowerPack

Content

Video Tutorial

Step-By-Step

In this section you will learn how to use MongoDB Source Adapter to extract data from MongoDB Collection (i.e. Table).
  1. Firstly, You need to Download and Install SSIS ZappySys PowerPack.
  2. Once you finished first step, Open Visual Studio and Create New SSIS Package Project.
  3. Now, Drag and Drop SSIS Data Flow Task from SSIS Toolbox.
    SSIS Data Flow Task - Drag and Drop
  4. Double click on the Data Flow task to see Data Flow designer surface.
  5. From the SSIS toolbox drag and drop MongoDB Source on the dataflow designer surface.
    SSIS MongoDB Source - Drag and Drop
  6. Now, we need MongoDB Connection. Lets Create it.
  7. Right click on Connection Managers Panel to Create MongoDB Connection, and Context Menu will appear, Select New Connection from the Context Menu.
    MongoDB execute command - insert JSON document into MongoDB
  8. Select ZS-MongoDB from the Connection Managers list and Click on Add Button
    SSIS MongoDB Create Connection
  9. Now, in Connection Manager you will get by default Host name if you have already installed MondoDB, just give your User Name, Password (You can leave it blank if not generated) and Database Name and hit on Test Connection and then click OK:
    SSIS MongoDB Create Connection
  10. Click OK to save connection information setting.
  11. Double click on MongoDB Source to configure it.
  12. Lets configure MongoDB Source in Various Access Mode.

    How to use MongoDB Source using Table Access Mode.

    SSIS MongoDB Source - Table Mode

    MongoDB Source Connector - Advanced Filter Options

    SSIS MongoDB Source - Advanced Tab

    How to use MongoDB Source using Query (SQL Query).

    Note : If you have table name with special character use square brackets to write table name.
    Example : SELECT * FROM [Employees-OldData]
    SSIS MongoDB Source - Query Mode
    Note : If you want to use nested array element in condition as column name you must use ArrayName.ElementName for an example LocationDetails.Country

    SSIS MongoDB Source - Query Mode
    Example : You can replace Columns Name, Values and Table Name.
    SELECT * FROM Employees
    WHERE
    (CustomerID = 'BOLID' OR
     CustomerID = 'VAFFE' OR
     CustomerID = 'WANDK')
     AND
    (LocationDetails.Country = 'Denmark' OR
     LocationDetails.Country = 'Germany')
    
    SSIS MongoDb Source - Query Mode - Preview

    How to use MongoDB Source using Query (native MongoDB Query language).


    Note : If you want to use nested array element in condition as column name you must use ArrayName.ElementName for an example LocationDetails.Country

    Example : You can replace Columns Name, Values and Table Name.
    {Maxrows:2, Table:Employees, Columns:"CustomerID|CustomerName|LocationDetails.Country"}
    {
    	"$and":
    	[
    		{"$or":
    		[{"CustomerID" : "BOLID"},
    		 {"CustomerID" : "VAFFE"},
    		 {"CustomerID" : "WANDK"}
    		 ]},
    		 {"$or":
    		[{"LocationDetails.Country" : "Denmark"},
    		 {"LocationDetails.Country" : "Germany"}
    		 ]}
    	 ]
    }
    
    SSIS MongoDB Source - Native MongoDB Query

    MongoDB Source Connector - Select Columns

    SSIS MongoDB Source - Select Columns

    SSIS MongoDB Source Connector - Output as JSON, Extract raw JSON from nested array

    SSIS MongoDB Source - Output as JSON, Extract raw JSON from nested Array
  13. Click OK to save settings.
  14. Now, Just Drag and Drop Our Free ZS Trash Destination from SSIS Toolbox.
    SSIS Trash Destination - Drag and Drop
  15. Now single click on the MongoDB Source, once you see blue arrow from source ... connect it to Trash Destination.
  16. Lets Double click on ZS Trash Destination to Configure it.
    SSIS Trash Destination - Drag and Drop
  17. Execute the package and verify source data in data viewer.
    SSIS MongoDB Source - Execute Package

Properties

Property Name Description
LoggingMode LoggingMode determines how much information is logged during Package Execution. Set Logging mode to Debugging for maximum log.

Available Options (Use numeric value listed in bracket if you have to define expression on this property (for dynamic behavior).

Option Description
Normal [0] Normal
Medium [1] Medium
Detailed [2] Detailed
Debugging [3] Debugging
PrefixTimestamp When you enable this property it will prefix timestamp before Log messages.
TableName Table name from where you want to read data
BatchSize Indicates how many records are process in a single request. Setting this value to 0 will extract all records in single request.
AccessMode Indicates Access Mode of data (e.g. Table or Sql Query)

Available Options (Use numeric value listed in bracket if you have to define expression on this property (for dynamic behavior).

Option Description
Table [0] Table
Query [1] Query
SqlCommand Specifies SQL query to access data. This setting is ignored when access mode is set to Table.
OutputMode Specifies how you want to output columns. If you select RAW JSON Document mode then only single document will output for each record in DT_NTEXT datatype

Available Options (Use numeric value listed in bracket if you have to define expression on this property (for dynamic behavior).

Option Description
Columns [0] Output Columns - Default Mode
ColumnsWithCleanJson [2] Output Columns (RegX Clean Mode - SLOW)
RawDocuments [10] Output Raw JSON documents
RawDocumentsShellMode [11] Output Raw JSON documents - Keep Native Syntax
IndentOutput Indent JSON output so its easy to read.
DateFormatString Specifies how custom date formatted strings are parsed when reading JSON.
DateParseHandling Specifies how date formatted strings, e.g. Date(1198908717056) and 2012-03-21T05:40Z, are parsed when reading JSON.

Available Options (Use numeric value listed in bracket if you have to define expression on this property (for dynamic behavior).

Option Description
None [0] Keep date as string
DateTime [1] Convert to DateTime (Timezone lost)
DateTimeOffset [2] Convert to DateTimeOffset (Preserve Time zone)
EnableJsonPath This option allows you to extract array content and sub documents of array.
Filter Enter expression here to filter data.(Example:  $.Users[*].UserName ) This will fetch User names from users records
IncludeParentColumns Use this option to include parent properties (Non array) in the output along with Filtered Rows
IncludeParentColumnsWhenChildMissing By default child and parent information is not included in the output if children not found for specified expression. For example if you want to extract all orders from all customers nodes then you can type $.Customers[*].Orders[*]. This will fetch all orders from all customers. By default customers records without orders wont be included in the output. If you want to include those customers where orders not found then check this option (Output null information for order attributes). This behavior is similar to LEFT OUTER JOIN in SQL (Left side is parent, right side is child). This option is ***resource intensive*** so only check if you really care about this behavior.
IncludeParentColumnsWithArrayType Set this option to true if you want to output parent columns which are array. By default any parent column which is an array is not included in output. See also FilterForParentColumnsWithArrayType property if you set this property
FilterForParentColumnsWithArrayType Filter expression to extract value form parent
ParentColumnPrefix Prefix for parent column name. This option is only valid if you have set IncludeParentColumns=True
ThrowErrorIfPropertyMissing Throw error if property name specified in filter expression is missing. By default it will ignore any missing property errors.
MaxLevelsToScan This property how many nested levels should be scanned to fetch various properties. 0=Scan all child levels.
ExcludedProperties List comma separated property names from JSON document which you want to exclude from output. Specify parent property name to exclude all child nodes.
LevelSeparator Property level separator used in generated property name (separator for outer properties - Above selected filter node). Use this if default separator is producing duplicate property name which is conflicting with existing name.
EnableArrayFlattening Enables deep array flattening for selected filtered hierarchy. When you turn on this property it will flatten each property of each array item and expose as column (e.g. If you have Filter set as $.customers[*] and for each customer you have an array of Addresses then you may see output columns like Addresses.1.City, Addresses.1.State, Addresses.2.City, Addresses.2.State .... Addresses.N.City, Addresses.N.State). You can control how many array items you want to flatten by setting MaxArrayItemsToFlatten property.
MaxArrayItemsToFlatten Maximum number of array items to flatten. inner array flattening. Adjust this property to control how many columns being generated. This option is ignored if you set EnableArrayFlattening=false
MetaDataScanMode Metadata scan mode controls how data type and length is determined. By default few records scanned to determine datatype/length. Changing ScanMode affects length/datatype accuracy.

Available Options (Use numeric value listed in bracket if you have to define expression on this property (for dynamic behavior).

Option Description
Auto [0] Auto
Strict [1] Strict - Exact length
Guess2x [2] Guess2x - 2 times bigger
Guess3x [3] Guess3x - 3 times bigger
Guess4x [4] Guess4x - 4 times bigger
TreatAsUnicodeString [5] Set all columns as string
Guess10x [6] Guess10x - 10 times bigger
TreatStringAsMaxLength [7] Set string columns with MAX Length - i.e. DT_WSTR(4000)
TreatStringAsBlob [8] Set string columns as BLOB - i.e. DT_NTEXT
MetaDataCustomLength Length for all string column. This option is only valid for MetaDataScanMode=Custom
MetaDataTreatStringAsAscii When this option is true, it detects all string values as DT_STR (Ascii) rather than DT_WSTR (Unicode)

Error handling

  • This component supports error output.
  • Any bad value will cause Error or Truncation (e.g. If your sample value is 5 character long but output column length is set to 3 chars). If you have error output attached with RedirectRow option on Error, Truncation then you can capture bad rows along with exact reason of error.
  • Use error handling tab to set option for error handling. By default component fails on any data error or truncation issue

Filter data / Extract from arrays

MongoDB source comes with JSON Path feature to allow you to extract data from nested array. Limitation of this feature is you can only extract one array only. If you have need to extract data from multiple arrays found inside MongoDB document then check below article.
https://zappysys.com/blog/how-to-extract-multiple-arrays-from-mongodb-using-ssis/
Below video tutorial demonstrates following things

MongoDB Native Query Language

Many features supported by MongoDB query engine is not implemented in our light weight SQL Style query language for MongoDB. In that case you can always use
Native MongoDB query syntax for full capability found in db.collection.find(...). When you use SQL Query for MongoDB Source it generates native query behind the scene. Syntax for using Native query is below. Below syntax has two parts. First part includes Table name, projection field names (optional) and row limit (optional). Second part includes actual native query document ( first argument of db.collection.find(...) method goes here). MongoDB Native query support many query operators (see below).

Syntax for MongoDB native query inside SSIS MongoDB Source:

{Table:YourTableName [, MaxRows: N] [,Columns:"Column1|Column2...ColumnN"] [,Option1...OptionN]}
{
	<MongoDB-Query-Goes-here>
}
        

Example : MongoDB native query (use of Query operators)

See below example of using native query inside MongoDB Source (MaxRows and Columns are optional. If you omit them all rows and all columns returned).
{Table:Customer, MaxRows: 2, Columns:"Age|CustomerID"}
{
  "$and": 
  [
  	 {"$or": 
	  [{"CustomerID": "ALFKI"},
       {"CustomerID": "BOLID"}
      ]},
    {"$or": 
	  [{"Age": 1},
       {"Age": 2},
       {"Age": 3}
      ]}
  ]
}
	
SSIS MongoDB Source - Example of MongoDB Native Query Syntax Above code is same as below SQL query
SELECT TOP 2 Age, CustomerID FROM Customer WHERE (CustomerID='ALFKI' OR CustomerID='BOLID') AND (Age=1 OR Age=2 OR Age=3)

MongoDB Aggregation Framework (Group by)

If you want to write aggregation queries in MongoDB (similar to Group By query in SQL language) then you must use Native query language because custom SQL Query language of MongoDB Source doesn't support Group By construct.To learn more about aggregation framework and pipeline operators check below links.
SQL vs MongoDB Aggregation Comparison
Aggregation framework pipeline operators
db.collection.aggregate()
Aggregation Pipeline Process
Here is syntax of Aggregation query syntax in MongoDB Source
{Table:YourTableName ,Method:aggregate [,MaxRows: N] [,AllowDiskUse:true] [,AllowCursor:true] [,Timeout:#####] }
{
	 pipeline: [
        [ <pipeline-stage1>]
        [,<pipeline-stage2>]
	  ...
	  ...
        [,<pipeline-stageN>]
	 ]
}
        
Option Description
Table (Required) Collection name on which you want to perform Aggregation.
Method (Required) Supported methods are Aggregation and Distinct. If you specify Method:Aggregation then you must specify pipeline attribute in query body. If you specify Distinct then you must specify Columns: YourColumnName.
MaxRows (Optional) Default=0 (i.e. no limit). Maximum number of rows you want to output (Similar as select top N from collection)
AllowDiskUse (Optional) Default=True. This option allow to exceed 100MB RAM limitation for pipeline. When set to true, aggregation operations can write data to the _tmp subdirectory in the dbPath directory
AllowCursor (Optional) Default=True. This option enables cursor which fetch data in batch. See BatchSize property of component to control size of batch. If you have large documents then reduce size of Batch so all records together is less than 16MB limit of single batch. You may sometimes get error aggregation result exceeds maximum document size (16MB). In that case reduce Batch size until error goes away.
Timeout (Optional). Timeout for command in seconds. This option specify how long single command can execute before throwing timeout error.

Performance tuning / Handling large documents / Buffers

Many times you may face slow queries. In that case make sure following few things.

Example : MongoDB native query using aggregation framework (Group By)

Here is an example of group by query using MongoDB Source. Notice how we arranged various pipeline stages in specific order under pipeline:[ {..},{..},{..} ] just like how you write SQL query in specific way (SELECT..FROM..WHERE..GROUP BY..HAVING..ORDER BY). MongoDB Aggregation Pipeline has similar concepts (e.g. $match, $group, $projection, $sort). Its not exact same way as SQL but you get an idea how to do aggregation in MongoDB. Notice that $match operator is used for filter (e.g. WHERE and HAVING both) in above example. If $match appears before $group stage then it acts as WHERE clause else HAVING clause (see below). To read more about various pipeline operators check this link
{Table: ZipCodes,Method: aggregate}
{
  pipeline: 
  [
    {$match : { status: "A" } } ,
    {$group : {_id :  "$state", TotalPopulation: { $sum: "$pop" }}},
    {$match: { TotalPopulation: { $gt: 25 } } },
    {$project : { StateAbbr: "$_id" , _id: 0, TotalPopulation:1 } },
    {$sort : {TotalPopulation : -1}}
  ]
}
Above MongoDB query is same as below relational SQL query
SELECT State as StateAbbr,SUM(population) as TotalPopulation 
FROM ZipCodes 
WHERE status='Active' 
HAVING SUM(population) > 25
Order By TotalPopulation DESC
SSIS MongoDB Source - Example of MongoDB Group By Query (Aggregation Framework - Pipeline)

Example : Getting distinct values in MongoDB Source

If you want to fetch distinct values for specific field using MongoDB Source then write following Native query.
{Table: ZipCodes,Method: distinct, Columns:'State'}
{
}
	
Above query is same as below SQL
SELECT DISTINCT state FROM ZipCodes
	
--OR-- Use some filter like below
{Table: ZipCodes,Method: distinct, Columns:'State'}
{
  $and: { status:'A', country:'USA' }
}
	
Above query is same as below SQL
SELECT DISTINCT state FROM ZipCodes WHERE status='A' AND country='USA'
	

Example : MongoDB native query (use of $where expression)

Here is another powerful use of $where query operator. $where support expressions and javascript functions for advanced query. However only use this operator if you cant use other operators such as (comparison operators and logical operators) because when you javascript in $where it may not use index defined on columns in your collection. Use the $where operator to pass either a string containing a JavaScript expression or a full JavaScript function to the query system. The $where provides greater flexibility, but requires that the database processes the JavaScript expression or function for each document in the collection. Reference the document in the JavaScript expression or function using either this or obj .
{Table:Customer}
{ $where: "this.credits == this.debits" } 

MongoDB SQL Query Language

If you work with traditional RDBMS and you recently come to NoSQL world you will quickly realize that most of NoSQL database vendors including MongoDB is missing familiar SQL query language. But no worry we got you covered. We have implemented custom query parser which will do hard work for you so you don't have to spend time learning new query language for MongoDB. Our query engine will convert SQL query to Native
MongoDB query language.

SQL Grammar for MongoDB:

<Select Statement> ::= SELECT [{TOP Clause}] {Column List} {From Clause} [{Where Clause}] [{OrderBy Clause}]

<TOP Clause>    ::= TOP IntegerLiteral
<Column List>   ::= * | IDENTIFIER [ [,IDENTIFIER] [,IDENTIFIER] ... ]
<From Clause>   ::= FROM IDENTIFIER
<Where Clause>  ::= WHERE <Expression List>
<OrderBy Clause>::= ORDER BY IDENTIFIER [ASC|DESC] [[,IDENTIFIER [ASC|DESC] [,IDENTIFIER [ASC|DESC] ... ]

! ============================================================================= 
! Expressions
! =============================================================================
! Nesting AND, OR supported using Multiple conditions
<Expression List>  ::= <Expression>
                           | <Expression> AND <Expression>
                           | <Expression> AND (<Expression List>)
                           | <Expression> OR <Expression>
                           | <Expression> OR (<Expression List>)


<Expression> ::= IDENTIFIER = <Value>
<Expression> ::= IDENTIFIER != <Value>
<Expression> ::= IDENTIFIER <> <Value>
<Expression> ::= IDENTIFIER > <Value>
<Expression> ::= IDENTIFIER >= <Value>
<Expression> ::= IDENTIFIER  < <Value>
<Expression> ::= IDENTIFIER <= <Value>
<Expression> ::= IDENTIFIER IN (<Value> [[, <Value>] [, <Value>] ...])
<Expression> ::= IDENTIFIER BETWEEN <Value> AND  <Value> 
<Expression> ::= IDENTIFIER LIKE <Value>
<Expression> ::= IDENTIFIER NOT LIKE <Value>
<Expression> ::= IDENTIFIER NOT LIKE <Value>
<Expression> ::= IDENTIFIER CONTAINS <Value>
<Expression> ::= IDENTIFIER IS NULL
<Expression> ::= IDENTIFIER IS NOT NULL

<Value>      ::= IntegerLiteral | StringLiteral
	

Supported Operators:


Searching for text patterns (Use of Regular Expressions):

To search text pattern you may use simple wild card (i.e. % ) in your LIKE clause or specify REGX hint. Your text pattern can end with search hints. To specify search hints use vertical bar and then one or more following options
select * from mytable where column LIKE 'some-pattern|[i][r][x][m][s]'
where options are as below Searching for text (case-sensitive mode - this is default):
by default text pattern search is case-sensitive so no option needed.
select * from customers where password LIKE 'P@ss'
Searching for text patterns (case-insensitive mode):
by default text pattern search is case-sensitive. If you want to perform case in-sensitive search then you must provide option [i] at the end after vertical bar.
select * from customers where City LIKE 'New%|i'
Searching for text patterns using Regular Expression:
select * from customers where phone LIKE '\d\d\d|r'
Using multiple options:
select * from customers where notes LIKE '^ABC\d(.*)|rm'

MongoDB SQL query language examples:

-- Selecting all columns

select * from CustomerTest

 

-- Selecting multiple columns

select CustomerID,CompanyName from CustomerTest

 

-- Selecting multiple columns, where some attribute name has space in it

select CustomerID,[Contact Title] from CustomerTest

 

-- Using Where clause with simple condition, select all columns

select * from CustomerTest Where CustomerID='ALC3R'

 

-- Query ISO Date attribute

select * from Orders Where OrderDate='DATE(2015-01-31)'

 

-- Using ORDER BY on single column

select * from CustomerTest Order By CustomerID

 

-- Using muliple columns in ORDER BY

select * from CustomerTest Order By CustomerID ASC,Country DESC

 

-- Using CONTAINS to do substring search

select * from CustomerTest Where CustomerID CONTAINS 'C3'

 

-- Using LIKE to do substring search (Only % allowed as wildcard character)

select * from CustomerTest Where CustomerID LIKE '%C3%'

 

-- Using NOT LIKE: Return all records where CustomerID doesnt contain substring 'C3'

select * from CustomerTest Where CustomerID NOT LIKE '%C%'

 

-- Using LIKE to search for starts with: search all record where ContactName starts with Maria

select * from CustomerTest Where ContactName LIKE 'Maria%'

 

-- Limiting records returned from query using TOP clause (Similar as LIMIT found inn some RDBMS query engine)

select top 7 * from CustomerTest

 

-- Using IN with String Values: select all records where CustomerID is 'ALFKI' or 'BOLID' or 'C3' (String values)

select * from CustomerTest where CustomerID IN ('ALFKI', 'BOLID','C3')

 

-- Using IN with Numeric Values: select all records where Age is 5 or 7 (Numeric values)

select * from CustomerTest where Age IN (5,7)

 

-- Using OR 

select * from CustomerTest Where CustomerID = 'ALFKI' OR CustomerID = 'BOLID'

 

-- Using OR 

select * from CustomerTest Where CustomerID = 'ALFKI' OR CustomerID = 'BOLID'

 

-- Mixing OR / AND

select * from CustomerTest Where (CustomerID = 'ALFKI' OR CustomerID='BOLID') AND (Age =1 OR Age =2 OR Age =3)

 

-- Using IS NOT NULL: Get all records where Age attribute is present and set to some value other than NULL

select * from CustomerTest Where Age IS NOT NULL

 

-- Using IS NULL: Get all records where Age attribute is either MISSING or is set to null

select * from CustomerTest Where Age IS NULL

 

 

-- Using comparision operators

select * from CustomerTest Where CustomerID <> 'ALFKI'

select * from CustomerTest Where CustomerID != 'ALFKI'

select * from CustomerTest Where Age > 5

select * from CustomerTest Where Age >= 5

select * from CustomerTest Where Age < 5

select * from CustomerTest Where Age = 5 AND CustomerID = 'C5'

 

-- Using BETWEEN for range compare

select * from CustomerTest Where Age Between 5 AND 10

 

-- Using NOT BETWEEN for range compare

select * from CustomerTest Where Age Not Between 5 AND 10

 

-- Mixing conditions

select * from CustomerTest Where (Age >= 1 OR Age <= 10) AND (CustomerID ='C7' Or CustomerID ='C9' )

select * from CustomerTest Where (CustomerID = 'ALFKI' OR (CustomerID = 'BOLID' OR (CustomerID = 'C1')))

 

 

Dynamic Query and Use DateTime Filter

MongoDB has
ISODate datatype support. If you want to query ISODate attribute then you can use following syntax.

Query ISODate in SQL Query

You can use DATE function to cast any string to valid ISODate for MongoDB query (This is custom function of ZappySys MongoDB SQL Language). DATE function has to be inside quotes as below.
SELECT * FROM Orders WHERE OrderDate > 'DATE(2015-01-31)'

Using Placeholder to make query dynamic

Placeholders are great way to make your query dynamic. Use placeholders anywhere in your Query and ZappySys MongoDB Source will replace Variable name with correct value at runtime.
SELECT * FROM Orders WHERE OrderDate < 'DATE({{User::LastOrderDate}})'

Using ISODate in MongoDB Native Query

{Table:Orders}
{
	"OrderDate" : { "$lt" : new ISODate("2015-01-02T00:16:15.184Z")}
}
For more information read this blog post

Settings UI

SSIS MongoDB Source - Setting UI
SSIS MongoDB Source - Setting UI
SSIS MongoDB Source - Setting UI
SSIS MongoDB Source - Setting UI

MongoDB Source FAQs

See Also

Articles / Tutorials

Click here to see all articles for [SSIS MongoDB Source] category
How to configure MongoDB SSL Connection in SSIS

How to configure MongoDB SSL Connection in SSIS

Introduction MongoDB comes with SSL support which can secure your end to end communication. However setting up MongoDB SSL Connection may require some configuration on both sides (i.e. Server and Client side). In this post our goal is to secure your MongoDB Integration in SSIS. Now lets look at steps to configure SSL in MongoDB. Configure […]


How to parse MongoDB Date time in SSIS

How to parse MongoDB Date time in SSIS

Introduction In our previous post we explained how to read/load MongoDB data in SSIS. This post covers specifically how to parse MongoDB date time stored inside your MongoDB documents. By default any well known date formats (e.g. ISO date) will be parsed as valid datetime (e.g. DT_DBTIMESTAMP) when you use SSIS MongoDB Source. But if you […]


How to extract multiple arrays from MongoDB using SSIS

How to extract multiple arrays from MongoDB using SSIS

Since MongoDB Source supports only one output you cannot select two different hierarchies as your filter criteria. However solution is easy. You can perform following steps to achieve similar result without fetching data twice with multiple sources. Same steps described below can be applied for JSON Source (read more here)   Steps – Extract multiple […]


How to write MongoDB Aggregation Queries in SSIS (Group By)

How to write MongoDB Aggregation Queries in SSIS (Group By)

Introduction In this post you will learn how to write flexible MongoDB Aggregation Queries in SSIS (i.e. Group By Query) using SSIS MongoDB Source Component. MongoDB provides powerful Aggregation Pipeline Engine which is conceptually same as writing Group By queries in traditional SQL world but its not exactly same. SSIS MongoDB Source returns nested MongoDB JSON […]


Read MongoDB data from array (extract nested sub documents)

Read MongoDB data from array (extract nested sub documents)

Introduction In this post you will learn how to read MongoDB data from Array. We recently introduced new JSON Path expression feature in SSIS MongoDB Source Connector to extract nested information from MongoDB documents.   Read documents from Array in MongoDB By default SSIS MongoDB Source Connector doesn’t support extracting data using JSON Path expression. So if […]


How to query MongoDB by date or ISODate

How to query MongoDB by date or ISODate

Introduction ZappySys provides high performance drag and drop connectors for MongoDB Integration. In our previous post we discussed how to query/load MongoDB data (Insert, Update, Delete, Upsert). In this post you will see how to query MongoDB by date (or ISODate) using SSIS MongoDB Source. To see full detail about possible query syntax see online help. MongoDB […]



Copyrights reserved. ZappySys LLC.