blob: 54204df8129b70b210cbaf39bcc703c431ca57de [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<head>
<meta charset="utf-8" />
<title>PutMongo</title>
<link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
</head>
<body>
<!-- Processor Documentation ================================================== -->
<h2>Description:</h2>
<p>
This processor is a general purpose processor for inserting, upserting and updating MongoDB collections.
</p>
<h2>Inserting Documents</h2>
<p>
Each flowfile is assumed to contain only a single MongoDB document to be inserted. The contents must be valid JSON.
The input the Mongo shell accepts should not be confused with valid JSON. It does not support batch writes at this time.
</p>
<h2>Updating and Upserting</h2>
<h3>Update Modes</h3>
<p>
There are two methods for choosing what gets written to a document when updating:
</p>
<ul>
<li>Whole document - the entire document is replaced with the contents of the flowfile.</li>
<li>With Operators Enabled - the document in the flowfile content will be assumed to have update operators such as
<em>$set</em> and will be used to update particular fields. The whole document will not be replaced.</li>
</ul>
<p>
There are two ways to update:
</p>
<ul>
<li>Update Key - use one or more keys from the document.</li>
<li>Update Query - use a totally separate query that is not derived from the document.</li>
</ul>
<h3>Update Key</h3>
<p>
The update key method takes keys from the document and builds a query from them. It will attempt to parse the <em>_id</em>
field as an <em>ObjectID</em> type if that is one of the keys that is specified in the configuration field. Multiple keys
can be specified by separating them with commas. This configuration field supports Expression Language, so it can
derived in part or entirely from flowfile attributes.
</p>
<h3>Update Query</h3>
<p>
The update query method takes a valid JSON document as its value and uses it to find one or more documents to update.
This field supports Expression Language, so it can be derived in part or entirely from flowfile attributes. It is possible,
for instance, to put an attribute named <em>update_query</em> on a flowfile and specify <em>${update_query}</em> in the
configuration field so it will load the value from the flowfile.
</p>
<h3>Upserts</h3>
<p>
If the upsert mode is enabled, PutMongo will insert a new document that matches the search criteria (be it a user-supplied
query or one built from update keys) and give it the properties that are specified in the JSON document provided in the
flowfile content. This feature should be used carefully, as it can result in incomplete data being added to MongoDB.
</p>
</body>
</html>