[ 
https://issues.apache.org/jira/browse/PHOENIX-7647?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Viraj Jasani reassigned PHOENIX-7647:
-------------------------------------

    Assignee: Palash Chauhan

> BSON_UPDATE_EXPRESSION() set value if field key does not exist
> --------------------------------------------------------------
>
>                 Key: PHOENIX-7647
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-7647
>             Project: Phoenix
>          Issue Type: Improvement
>            Reporter: Viraj Jasani
>            Assignee: Palash Chauhan
>            Priority: Major
>             Fix For: 5.3.0
>
>
> In order to provide the conditional update to the given path of the document, 
> new internal function can be used by BSON_UPDATE_EXPRESSION() such that it 
> helps set the given key-value pair in the document only if the document key 
> path does not exist.
> For instance,
> {code:java}
> {
>   "$SET": {
>     "key1": "val1",
>     "key2": 10.2345,
>     "key3": {
>       "$IF_NOT_EXISTS": {
>         "key3": "val3"
>       }
>     },
>     "key9": {
>       "$IF_NOT_EXISTS": {
>         "key8": "val9"
>       }
>     },
>     "key4.key10": {
>       "$IF_NOT_EXISTS": {
>         "key4.key10": true
>       }
>     },
>     "key5.key11[2]": {
>       "$IF_NOT_EXISTS": {
>         "key5.key10": {
>           "field123": "val123"
>         }
>       }
>     }
>   }
> } {code}
> With the above update expression, we are expecting to set the values of key1 
> and key2 with the respective values unconditionally. However, using 
> $IF_NOT_EXISTS, conditional update is introduced.
>  * The value of field "key3" will be set to "val3" only if "key3" does not 
> exist, else it can be considered no-op.
>  * The value of "key9" will be set to "val9" if "key8" does not exist, else 
> the value of "key8" will be set to "key9".
>  * The value of nested field "key10" within "key4" will be set to boolean 
> true if it does not exist.
>  * The value of nested array field "key5.key11[2]" will be set to document 
> with single key-value pair "field123": "val123" if the nested field 
> "key5.key10" does not exist. If it does exist, then the value of "key5.key10" 
> will be set to "key5.key11[2]".
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to