{"id":12197,"date":"2018-06-22T08:40:45","date_gmt":"2018-06-22T12:40:45","guid":{"rendered":"http:\/\/www.iri.com\/blog\/?p=12197"},"modified":"2020-05-01T17:30:11","modified_gmt":"2020-05-01T21:30:11","slug":"native-mongodb-masking-voracity","status":"publish","type":"post","link":"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/","title":{"rendered":"Native MongoDB Masking (3rd Method)"},"content":{"rendered":"<p><span style=\"font-weight: 400;\"><em>Note: This article covers the third available IRI customer method for\u00a0<a href=\"http:\/\/www.iri.com\/solutions\/data-masking\/static-data-masking\">statically<\/a> masking or encrypting PII in <span style=\"text-decoration: underline;\">structured<\/span>\u00a0MongoDB collections through the IRI FieldShield product or IRI Voracity platform (both powered by IRI CoSort v10 and its support of the native MongoDB driver). A <a href=\"https:\/\/www.iri.com\/blog\/data-protection\/mongodb-cassandra-darkshield\/\">fourth method is now available<\/a> for finding and masking PII floating in <span style=\"text-decoration: underline;\">unstructured<\/span> MongoDB collections through <a href=\"https:\/\/www.iri.com\/products\/darkshield\">IRI DarkShield<\/a>.<\/em><\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">This article explains how new, native MongoDB collection support in IRI&#8217;s data manipulation products enables<\/span><span style=\"font-weight: 400;\">\u00a0the rapid performance and consolidation of multiple data-centric <a href=\"\/products\/cosort\/sortcl\/function-matrix\">functions<\/a>, including:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">data profiling &amp; cleansing<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\"><a href=\"\/solutions\/data-masking\">data masking<\/a> &amp; re-ID risk scoring<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">data integration (ETL) &amp; CDC<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">data migration &amp; replication<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">custom report &amp; test data generation<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">The API-level support for MongoDB data is offered in the core <a href=\"\/products\/cosort\/sortcl\">SortCL<\/a>\u00a0program, which is the default processing engine of the\u00a0<\/span><a href=\"\/products\/voracity\"><span style=\"font-weight: 400;\">IRI Voracity<\/span><\/a><span style=\"font-weight: 400;\">\u00a0data management platform, as well as its subset <a href=\"\/products\">products<\/a>: CoSort, NextForm, FieldShield, and RowGen. This connection method is the third, and fastest, way that IRI customers can acquire and manipulate data in MongoDB collections. The first is via flat files as described in 2014 <\/span><a href=\"\/blog\/vldb-operations\/masking-data-in-mongodb\/\"><span style=\"font-weight: 400;\">here<\/span><\/a><span style=\"font-weight: 400;\">. The second is with ODBC and JDBC drivers described in 2016 <\/span><a href=\"\/blog\/data-protection\/direct-data-masking-for-mongodb\/\"><span style=\"font-weight: 400;\">here<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h2>About MongoDB<\/h2>\n<p><span style=\"font-weight: 400;\">MongoDB is a \u201cNoSQL\u201d, document-oriented database which works on the concept of collections and JSON-like documents with schemas. A collection, like a relational database table, contains one or more documents. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">A document is a set of key-value pairs. <\/span><span style=\"font-weight: 400;\">Documents have dynamic schema, which means that documents in the same collection do not need to have the same set of fields or structure. Common fields in a collection&#8217;s documents may hold different types of data.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The following chart compares the terminology of an RDBMS and MongoDB:<\/span><\/p>\n\n<table id=\"tablepress-28\" class=\"tablepress tablepress-id-28\">\n<thead>\n<tr class=\"row-1 odd\">\n\t<th class=\"column-1\">Oracle<\/th><th class=\"column-2\">MongoDB<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-hover\">\n<tr class=\"row-2 even\">\n\t<td class=\"column-1\">Database<\/td><td class=\"column-2\">Database<\/td>\n<\/tr>\n<tr class=\"row-3 odd\">\n\t<td class=\"column-1\">Table<\/td><td class=\"column-2\">Collection<\/td>\n<\/tr>\n<tr class=\"row-4 even\">\n\t<td class=\"column-1\">Row<\/td><td class=\"column-2\">Document<\/td>\n<\/tr>\n<tr class=\"row-5 odd\">\n\t<td class=\"column-1\">Column<\/td><td class=\"column-2\">Field<\/td>\n<\/tr>\n<tr class=\"row-6 even\">\n\t<td class=\"column-1\">Primary Key<\/td><td class=\"column-2\">Object ID provided by MongoDB<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-28 from cache -->\n<h2>Demonstration<\/h2>\n<p><span style=\"font-weight: 400;\">My example below does a simple sort, mask, and movement of a MongoDB collection called \u201cchiefs\u201d into another collection, and also out to a standalone JSON file. JSON files are another new IRI data source supported in the release of CoSort v10.<\/span><\/p>\n<h2>Database Connection<\/h2>\n<p><span style=\"font-weight: 400;\">The first step is to establish connectivity with your MongoDB instance in <\/span><a href=\"\/products\/workbench\"><span style=\"font-weight: 400;\">IRI Workbench<\/span><\/a><span style=\"font-weight: 400;\">. Built on Eclipse, IRI Workbench is the common job design and deployment IDE for all the IRI software listed above. It\u2019s also where you can connect to other DBs, HDFS, and additional data sources in local or remote file systems.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">From the IRI Menu (swirl icon) in the Workbench toolbar, select <\/span><b>IRI Preferences &gt; IRI &gt; URL Connection Registry &gt; Add<\/b><span style=\"font-weight: 400;\">. Specify an existing MongoDB from the schema and the server hostname. My DB\u2019s name is cmitra, created on the \u2018mongodbu\u2019 host:<\/span><\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-url-connection-details.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12213\" src=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-url-connection-details.png\" alt=\"native mongodb masking url connection details\" width=\"600\" height=\"498\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-url-connection-details.png 688w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-url-connection-details-300x249.png 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">For convenience, I installed the free <\/span><a href=\"https:\/\/marketplace.eclipse.org\/content\/monjadb\"><span style=\"font-weight: 400;\">MonjaDB plug-in<\/span><\/a><span style=\"font-weight: 400;\"> for Eclipse to interact with the database within my Workbench perspective. My collection contains US Presidents by name, party, state, and their term dates. MongoDB assigned a unique ID for each document:<\/span><\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-chiefs.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12202\" src=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-chiefs.png\" alt=\"native mongodb masking chiefs file\" width=\"600\" height=\"511\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-chiefs.png 702w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-chiefs-300x256.png 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<h2>Metadata Definition<\/h2>\n<p><span style=\"font-weight: 400;\">Before I can process MongoDB data in this mode, I must create a data definition format (DDF) file that lays out my collection documents in \/FIELD statements for use in SortCL-compatible jobs like FieldShield. As with other data sources supported in Workbench, a wizard does this for me automatically. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Create (or select an existing) Project Folder in Workbench to store the job assets like the source metadata, SortCL script\/diagram, saved masking rules, data classes, etc. With that folder active (highlighted) and knowledge of my MongoDB collection\u2019s location, I can now run the <\/span><b>Discover Metadata<\/b><span style=\"font-weight: 400;\"> wizard from the IRI menu in the top toolbar.<\/span><\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-data-source-identification.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12203\" src=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-data-source-identification.png\" alt=\"native mongodb masking data source identification\" width=\"531\" height=\"369\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-data-source-identification.png 531w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-data-source-identification-300x208.png 300w\" sizes=\"(max-width: 531px) 100vw, 531px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">In this Data Source Identification step, I can select an ODBC connection, file-browse, or URL. In this case, I am reaching MongoDB via URL, so I choose that and MongoDB for my format. After browsing for the database registry entry I previously added, I enter the collection name. The wizard prepends this to the standard MongoDB connection string.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The Data Viewer and Field Editor page connects to the collection and previews its column contents and columns as SortCL field names:<\/span><\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-data-viewer-field-editor.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12207\" src=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-data-viewer-field-editor.png\" alt=\"native mongodb masking data viewer field editor\" width=\"529\" height=\"537\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-data-viewer-field-editor.png 529w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-data-viewer-field-editor-296x300.png 296w\" sizes=\"(max-width: 529px) 100vw, 529px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">When I click <\/span><b>Finish<\/b><span style=\"font-weight: 400;\">, my DDF file is created and displays as follows: <\/span><\/p>\n<p><code>\/FIELD=(PRESIDENT, TYPE=UTF8, POSITION=1, SEPARATOR=\"|\", MDEF=\"president\")<br \/>\n\/FIELD=(PARTY, TYPE=UTF8, POSITION=2, SEPARATOR=\"|\", MDEF=\"party\")<br \/>\n\/FIELD=(STATE, TYPE=UTF8, POSITION=3, SEPARATOR=\"|\", MDEF=\"state\")<br \/>\n\/FIELD=(START, TYPE=NUMERIC, POSITION=4, SEPARATOR=\"|\", MDEF=\"term.start\")<br \/>\n\/FIELD=(END, TYPE=NUMERIC, POSITION=5, SEPARATOR=\"|\", MDEF=\"term.end\")<\/code><\/p>\n<p><span style=\"font-weight: 400;\">This DDF metadata can be used in any job (or jobs) affecting this collection, including the one in this example as shown below. The _id column is unneeded for my purposes was omitted.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Note the use of <\/span><a href=\"https:\/\/docs.mongodb.com\/manual\/core\/document\/#document-dot-notation\"><span style=\"font-weight: 400;\">dot notation<\/span><\/a><span style=\"font-weight: 400;\"> in the \u201cMDEF\u201d attribute, which is a required path definition to discrete, flat elements SortCL jobs process. Multi-value and sub document array elements get generated in sequence starting with 0 in their order of appearance.<\/span><\/p>\n<h2>Run the Job Design Wizard<\/h2>\n<p><span style=\"font-weight: 400;\">Workbench includes many different fit-for-purpose wizards for generating the metadata for running discrete tasks (.*cl scripts) or batch-driven jobs (.flow and .bat\/.sh files) on the command line, through Workbench, your programs, etc. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">I chose a basic sort transform wizard because within it I can add multiple targets, mask output fields, etc. This wizard runs from the CoSort menu group (stopwatch) icon from the toolbar. I select <\/span><b>New Sort Job<\/b><span style=\"font-weight: 400;\"> and specified <\/span><i><span style=\"font-weight: 400;\">chiefsout.scl<\/span><\/i><span style=\"font-weight: 400;\"> as the name of my job:<\/span><\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-job-specification-file.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12209\" src=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-job-specification-file.png\" alt=\"native mongodb masking job specification file\" width=\"489\" height=\"426\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-job-specification-file.png 489w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-job-specification-file-300x261.png 300w\" sizes=\"(max-width: 489px) 100vw, 489px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">In the next step, I identify the name of my source MongoDB collection and where it is, using the same locator URL used during the metadata definition for \u201cchiefs\u201d:<\/span><\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-data-sources.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12204\" src=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-data-sources.png\" alt=\"native mongodb masking data sources\" width=\"534\" height=\"572\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-data-sources.png 534w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-data-sources-280x300.png 280w\" sizes=\"(max-width: 534px) 100vw, 534px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">The next step is to specify the generation, or use of existing, <\/span><a href=\"\/products\/cosort\/sortcl-metadata\"><span style=\"font-weight: 400;\">metadata<\/span><\/a><span style=\"font-weight: 400;\"> for the collection in the data definition (DDF) format required in all SortCL-compatible programs. In this case, I will use the DDF file I created in Step 2 above. I select <\/span><b>Add Existing Metadata <\/b><span style=\"font-weight: 400;\">to put these layouts directly into my job script as input specifications, and they then get reflected in the dialog below:<\/span><\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-data-sources-infile-chiefs.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12205\" src=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-data-sources-infile-chiefs.png\" alt=\"native mongodb masking data sources infile chiefs\" width=\"476\" height=\"542\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-data-sources-infile-chiefs.png 476w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-data-sources-infile-chiefs-263x300.png 263w\" sizes=\"(max-width: 476px) 100vw, 476px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">On the next page, I specify a sort key field to define the order of data in my target(s). In this\u00a0<\/span>case, I will go from the default chronological order of presidents and sort them by name:<\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-key-fields-president.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12210\" src=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-key-fields-president.png\" alt=\"native mongodb masking key fields president\" width=\"466\" height=\"493\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-key-fields-president.png 466w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-key-fields-president-284x300.png 284w\" sizes=\"(max-width: 466px) 100vw, 466px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">After clicking <\/span><b>Next<\/b><span style=\"font-weight: 400;\">, the Data Targets<\/span> <span style=\"font-weight: 400;\">page displays. As with my source options, there are several different kinds of targets I can create and format through this wizard and also later in another job design mode (e.g., script editor). <\/span><\/p>\n<p><span style=\"font-weight: 400;\">This and other Workbench wizards allow me to keep adding targets, and granularly defining the contents of each one. Target-specific attributes include: format (e.g., CSV, MongoDB, MFVL), formatting (e.g., headers and footers, rows to skip, etc.), filter conditions, field-level layouts, and applied functions\/rules (e.g., new data types, masks, expression logic, aggregation). <\/span><\/p>\n<p><span style=\"font-weight: 400;\">In the Data Targets page, I know that I want two targets: a standalone JSON file and a remote MongoDB collection. Thus, I click <\/span><b>Add Data Target<\/b><span style=\"font-weight: 400;\"> and begin specifying the first one. Unless I edit the target options or target field layout, my output will only contain the sorted version of the input data as is. That\u2019s what my JSON target file will contain by simply my naming it..<\/span><\/p>\n<p><span style=\"font-weight: 400;\">When I again click <\/span><b>Add Data Target<\/b><span style=\"font-weight: 400;\"> I define the second as a MongoDB collection via URL. My new <\/span><i><span style=\"font-weight: 400;\">chiefsmask <\/span><\/i><span style=\"font-weight: 400;\">collection will automatically build and populate when I run the job. It is within that target that I want one of the fields masked for privacy, the President\u2019s names in this case. I click on <\/span><b>Target Field Layout<\/b><span style=\"font-weight: 400;\"> to open a top-to-bottom mapping page for my source and targets:<\/span><\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-target-field-layout.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12212\" src=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-target-field-layout.png\" alt=\"native mongodb masking target field layout\" width=\"600\" height=\"541\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-target-field-layout.png 667w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-target-field-layout-300x270.png 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">This page also shows my masking rule already defined. I had defined that by right-clicking on PRESIDENT in the target and clicking <\/span><b>Create Rule<\/b><span style=\"font-weight: 400;\"> (instead of browsing to an existing one)<\/span><span style=\"font-weight: 400;\">. <\/span><span style=\"font-weight: 400;\">That opened a list of field-level protection wizards, shown below. Note that more static data <\/span><a href=\"\/solutions\/data-masking\/static-data-masking\"><span style=\"font-weight: 400;\">masking functions<\/span><\/a><span style=\"font-weight: 400;\"> are available.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">I selected Masking (character redaction). On that page, I took the full-field default to mask out the entire President\u2019s name in the target collection:<\/span><\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-new-field-rule-wizard-selection.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12211\" src=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-new-field-rule-wizard-selection.png\" alt=\"native mongodb masking new field and rule wizard selection\" width=\"600\" height=\"543\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-new-field-rule-wizard-selection.png 754w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-new-field-rule-wizard-selection-300x271.png 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">After finishing these selections, I am returned to the mapping dialog. I click <\/span><i><span style=\"font-weight: 400;\">OK <\/span><\/i><span style=\"font-weight: 400;\">and return to the Data Targets page. At the end of my changes, I will wind up with the details below:<\/span><\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-data-targets.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12206\" src=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-data-targets.png\" alt=\"native mongodb masking data targets\" width=\"528\" height=\"460\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-data-targets.png 528w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-data-targets-300x261.png 300w\" sizes=\"(max-width: 528px) 100vw, 528px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">I click <\/span><b>OK <\/b><span style=\"font-weight: 400;\">to end the wizard and build the job. <\/span><\/p>\n<h2>Review the Job<\/h2>\n<p><span style=\"font-weight: 400;\">With the <\/span><i><span style=\"font-weight: 400;\">chiefsout.scl<\/span><\/i><span style=\"font-weight: 400;\"> job now built in my active project and open for me in the editing window automatically, I can see and modify it from there, or through available in-context dialog pages. Learn about script editing options <\/span><a href=\"\/blog\/data-transformation2\/using-the-job-script-editor-in-iri-workbench\/\"><span style=\"font-weight: 400;\">here<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">I can also right-click inside the script or its file name in the project window, and from an IRI menu of options, build a flow diagram to visualize the task within a project. From inside the flow diagram, I double-click on the brown task block to open a transform mapping diagram showing the source-to-target field movement I\u2019ve defined, this time left-to-right:<\/span><\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-flow.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12208\" src=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-flow-1024x684.png\" alt=\"native mongodb masking flow\" width=\"600\" height=\"401\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-flow-1024x684.png 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-flow-300x200.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-flow-768x513.png 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-flow.png 1558w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">The <\/span><i><span style=\"font-weight: 400;\">chiefsout.scl<\/span><\/i><span style=\"font-weight: 400;\"> script and <\/span><i><span style=\"font-weight: 400;\">chiefsout.flow<\/span><\/i><span style=\"font-weight: 400;\"> file are both open, team-shareable <\/span><a href=\"\/solutions\/metadata-mdm\/metadata-management\"><span style=\"font-weight: 400;\">metadata assets<\/span><\/a><span style=\"font-weight: 400;\"> that share a common data model.<\/span><\/p>\n<h2>Run the Job<\/h2>\n<p><span style=\"font-weight: 400;\">There are also <\/span><a href=\"\/services\/training\/courseware#workbench\"><span style=\"font-weight: 400;\">multiple ways<\/span><\/a><span style=\"font-weight: 400;\"> to execute the job I built, both from and outside Workbench.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Shown below is the source collection and my same job represented in script and outline form. After running the job, I opened a MonjaDB view of the sorted and masked collection target, and my sorted JSON file target to its right:<\/span><\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-workbench.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12214\" src=\"\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-workbench-1024x639.png\" alt=\"native mongodb masking workbench\" width=\"600\" height=\"374\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-workbench-1024x639.png 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-workbench-300x187.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-workbench-768x479.png 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-workbench.png 1110w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">As mentioned, many other permutations of, and faster data management jobs using, MongoDB data are now possible in this environment. IRI Voracity users can now choose from three connection methods to MongoDB and dozens of functional <\/span><a href=\"\/products\/voracity\/technical-details#capabilities\"><span style=\"font-weight: 400;\">capabilities<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">If you have any questions or need help, contact your IRI representative <\/span><a href=\"\/partners\/resellers\"><span style=\"font-weight: 400;\">here<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Note: This article covers the third available IRI customer method for\u00a0statically masking or encrypting PII in structured\u00a0MongoDB collections through the IRI FieldShield product or IRI Voracity platform (both powered by IRI CoSort v10 and its support of the native MongoDB driver). A fourth method is now available for finding and masking PII floating in unstructured<\/p>\n<div><a class=\"btn-filled btn\" href=\"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/\" title=\"Native MongoDB Masking (3rd Method)\">Read More<\/a><\/div>\n","protected":false},"author":53,"featured_media":12212,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[8,1,3],"tags":[44,7,14,13,5,782,270,1313,1316,1317,1315,533,1314,68,24,1216],"class_list":["post-12197","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-protection","category-data-transformation2","category-vldb-operations","tag-cosort","tag-data-manipulation-2","tag-data-masking","tag-data-protection-2","tag-data-transformation","tag-databases","tag-iri-2","tag-mongo","tag-mongo-database-masking","tag-mongo-database-protection","tag-mongo-masking","tag-mongodb","tag-mongodb-masking","tag-sortcl","tag-vldb","tag-voracity"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Native MongoDB Masking (3rd Method) - IRI<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Native MongoDB Masking (3rd Method) - IRI\" \/>\n<meta property=\"og:description\" content=\"Note: This article covers the third available IRI customer method for\u00a0statically masking or encrypting PII in structured\u00a0MongoDB collections through the IRI FieldShield product or IRI Voracity platform (both powered by IRI CoSort v10 and its support of the native MongoDB driver). A fourth method is now available for finding and masking PII floating in unstructuredRead More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/\" \/>\n<meta property=\"og:site_name\" content=\"IRI\" \/>\n<meta property=\"article:published_time\" content=\"2018-06-22T12:40:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-05-01T21:30:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-target-field-layout.png\" \/>\n\t<meta property=\"og:image:width\" content=\"667\" \/>\n\t<meta property=\"og:image:height\" content=\"601\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Chaitali Mitra\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Chaitali Mitra\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/\"},\"author\":{\"name\":\"Chaitali Mitra\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/9bae14a309616863b027c2d56f532caf\"},\"headline\":\"Native MongoDB Masking (3rd Method)\",\"datePublished\":\"2018-06-22T12:40:45+00:00\",\"dateModified\":\"2020-05-01T21:30:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/\"},\"wordCount\":1554,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-target-field-layout.png\",\"keywords\":[\"CoSort\",\"data manipulation\",\"data masking\",\"data protection\",\"data transformation\",\"databases\",\"iri\",\"mongo\",\"mongo database masking\",\"mongo database protection\",\"mongo masking\",\"MongoDB\",\"mongodb masking\",\"SortCL\",\"VLDB\",\"Voracity\"],\"articleSection\":[\"Data Masking\/Protection\",\"Data Transformation\",\"VLDB\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/\",\"url\":\"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/\",\"name\":\"Native MongoDB Masking (3rd Method) - IRI\",\"isPartOf\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-target-field-layout.png\",\"datePublished\":\"2018-06-22T12:40:45+00:00\",\"dateModified\":\"2020-05-01T21:30:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/#primaryimage\",\"url\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-target-field-layout.png\",\"contentUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-target-field-layout.png\",\"width\":667,\"height\":601,\"caption\":\"native mongodb masking target field layout\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/beta.iri.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Native MongoDB Masking (3rd Method)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#website\",\"url\":\"https:\/\/beta.iri.com\/blog\/\",\"name\":\"IRI\",\"description\":\"Total Data Management Blog\",\"publisher\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/beta.iri.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#organization\",\"name\":\"IRI\",\"url\":\"https:\/\/beta.iri.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png\",\"contentUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png\",\"width\":750,\"height\":206,\"caption\":\"IRI\"},\"image\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/9bae14a309616863b027c2d56f532caf\",\"name\":\"Chaitali Mitra\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/95a11f3d0b709c00df3262bab0152f3a?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/95a11f3d0b709c00df3262bab0152f3a?s=96&d=blank&r=g\",\"caption\":\"Chaitali Mitra\"},\"sameAs\":[\"http:\/\/www.iri.com\"],\"url\":\"https:\/\/beta.iri.com\/blog\/author\/chaitalim\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Native MongoDB Masking (3rd Method) - IRI","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/","og_locale":"en_US","og_type":"article","og_title":"Native MongoDB Masking (3rd Method) - IRI","og_description":"Note: This article covers the third available IRI customer method for\u00a0statically masking or encrypting PII in structured\u00a0MongoDB collections through the IRI FieldShield product or IRI Voracity platform (both powered by IRI CoSort v10 and its support of the native MongoDB driver). A fourth method is now available for finding and masking PII floating in unstructuredRead More","og_url":"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/","og_site_name":"IRI","article_published_time":"2018-06-22T12:40:45+00:00","article_modified_time":"2020-05-01T21:30:11+00:00","og_image":[{"width":667,"height":601,"url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-target-field-layout.png","type":"image\/png"}],"author":"Chaitali Mitra","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Chaitali Mitra","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/#article","isPartOf":{"@id":"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/"},"author":{"name":"Chaitali Mitra","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/9bae14a309616863b027c2d56f532caf"},"headline":"Native MongoDB Masking (3rd Method)","datePublished":"2018-06-22T12:40:45+00:00","dateModified":"2020-05-01T21:30:11+00:00","mainEntityOfPage":{"@id":"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/"},"wordCount":1554,"commentCount":2,"publisher":{"@id":"https:\/\/beta.iri.com\/blog\/#organization"},"image":{"@id":"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/#primaryimage"},"thumbnailUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-target-field-layout.png","keywords":["CoSort","data manipulation","data masking","data protection","data transformation","databases","iri","mongo","mongo database masking","mongo database protection","mongo masking","MongoDB","mongodb masking","SortCL","VLDB","Voracity"],"articleSection":["Data Masking\/Protection","Data Transformation","VLDB"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/","url":"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/","name":"Native MongoDB Masking (3rd Method) - IRI","isPartOf":{"@id":"https:\/\/beta.iri.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/#primaryimage"},"image":{"@id":"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/#primaryimage"},"thumbnailUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-target-field-layout.png","datePublished":"2018-06-22T12:40:45+00:00","dateModified":"2020-05-01T21:30:11+00:00","breadcrumb":{"@id":"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/#primaryimage","url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-target-field-layout.png","contentUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-target-field-layout.png","width":667,"height":601,"caption":"native mongodb masking target field layout"},{"@type":"BreadcrumbList","@id":"https:\/\/beta.iri.com\/blog\/data-protection\/native-mongodb-masking-voracity\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/beta.iri.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Native MongoDB Masking (3rd Method)"}]},{"@type":"WebSite","@id":"https:\/\/beta.iri.com\/blog\/#website","url":"https:\/\/beta.iri.com\/blog\/","name":"IRI","description":"Total Data Management Blog","publisher":{"@id":"https:\/\/beta.iri.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/beta.iri.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/beta.iri.com\/blog\/#organization","name":"IRI","url":"https:\/\/beta.iri.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png","contentUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png","width":750,"height":206,"caption":"IRI"},"image":{"@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/9bae14a309616863b027c2d56f532caf","name":"Chaitali Mitra","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/95a11f3d0b709c00df3262bab0152f3a?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/95a11f3d0b709c00df3262bab0152f3a?s=96&d=blank&r=g","caption":"Chaitali Mitra"},"sameAs":["http:\/\/www.iri.com"],"url":"https:\/\/beta.iri.com\/blog\/author\/chaitalim\/"}]}},"jetpack_featured_media_url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2018\/06\/native-mongodb-masking-target-field-layout.png","_links":{"self":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/12197"}],"collection":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/users\/53"}],"replies":[{"embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/comments?post=12197"}],"version-history":[{"count":17,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/12197\/revisions"}],"predecessor-version":[{"id":13642,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/12197\/revisions\/13642"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/media\/12212"}],"wp:attachment":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/media?parent=12197"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/categories?post=12197"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/tags?post=12197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}