[ 
https://issues.apache.org/jira/browse/NIFI-4989?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16404069#comment-16404069
 ] 

ASF GitHub Bot commented on NIFI-4989:
--------------------------------------

Github user MikeThomsen commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/2560#discussion_r175296639
  
    --- Diff: 
nifi-nar-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/main/java/org/apache/nifi/processors/mongodb/PutMongo.java
 ---
    @@ -196,6 +237,33 @@ public void onTrigger(final ProcessContext context, 
final ProcessSession session
             }
         }
     
    +    private void removeUpdateKeys(String updateKeyParam, Map doc) {
    +        String[] parts = updateKeyParam.split(",[\\s]*");
    +        for (String part : parts) {
    +            if (part.contains(".")) {
    --- End diff --
    
    For this input:
    
    ```
    {
        "name": "John Smith",
        "department": "Engineering"
    }
    ```
    
    It makes no sense to remove `name` if we're doing a full document update 
using the `name key.
    
    Now consider this complex document:
    
    ```
    {
        "name": "John Smith",
        "department": "Engineering",
        "contacts": {
             "email": "[email protected]"
         }
    }
    ```
    
    To search on `email`, we have to submit this payload with the lookup key 
being `contacts.email`:
    
    ```
    {
        "contacts.email": "[email protected]",
        "name": "John Smith",
        "department": "Engineering",
        "contacts": {
             "email": "[email protected]"
         }
    }
    ```
    
    Mongo cannot do a lookup using this: `{ "contacts": { "email": 
"[email protected]" }}`
    
    So if we don't remove the complex lookup key, we are leaving extraneous 
information in the document that almost certainly has no value to the user.
    
    Now maybe we'll get an angry ticket complaining that they can't do periods 
in the key names, but I've never seen normal use cases where developers do 
that. The whole idea of creating complex key names for real data using periods 
and such flies in the face of how JSON is supposed to work.


> PutMongo cannot specify nested fields or multiple lookup keys
> -------------------------------------------------------------
>
>                 Key: NIFI-4989
>                 URL: https://issues.apache.org/jira/browse/NIFI-4989
>             Project: Apache NiFi
>          Issue Type: Improvement
>            Reporter: Mike Thomsen
>            Assignee: Mike Thomsen
>            Priority: Major
>
> From the user mailing list:
> {quote}{color:#222222}I am using PutMongo processor to update documents in a 
> mongoDB collection.{color}
> {color:#222222}I would like to specify nested field and multiple key in the 
> update Key.{color}
> {color:#222222}For exemple :{color}
> {color:#222222}- my mongodb documents are {"nom":"HAMEL", 
> "prenom":"Yves",{color}
> {color:#222222}"ids":\{"idSoc":"1234", "idInterne":"788"}}{color}
> {color:#222222}- I would'd like to set update query key to something like 
> {"ids.idSoc" ,{color}
> {color:#222222}"nom"}{color}
> {color:#222222}- this would means that I update document with ids.idSoc and 
> nom equals to{color}
> {color:#222222}my mew document.{color}
> {quote}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to