2017-08-28 60 views
0

這是我更新的文檔,當我第一次執行查詢結果是Result1,再次執行查詢一次結果是Result2。N1ql查詢Array_Append控件退出元素

查詢:

UPDATE默認爲d SET e.contact = ARRAY_APPEND(e.contact,{ 「電子郵件」: 「[email protected]」, 「手機」:9876655555}) FOR E在d .details WHEN e.id = 1234 END WHERE META()。id =「k01」;

結果1:

"k01": 
    { 
     "details": [ 
     { 
      "id": 1234, 
      "city": "Medway", 
      "country": "United Kingdom", 
      "name": "Medway Youth Hostel", 
      "url": "http://www.yha.org.uk", 
      "contact": [ 
      { 
       "email": "[email protected]", 
       "phone": 6789435634 
      } 
       ] 
     }] 
    } 

結果2:

"k01": 
    { 
     "details": [ 
     { 
      "id": 1234, 
      "city": "Medway", 
      "country": "United Kingdom", 
      "name": "Medway Youth Hostel", 
      "url": "http://www.yha.org.uk", 
      "contact": [ 
      { 
       "email": "[email protected]", 
       "phone": 6789435634 
      }, 
      { 
       "email": "[email protected]", 
       "phone": 6789435634 
      } 
       ] 
     }] 
    } 

如何可以控制重複的值,當我執行用於第二次用相同values.Everytime字段查詢與相同的值插入不管元素是否存在。請建議我(查詢)。因此,不會有重複的追加

回答

0

UPDATE默認AS d SET e.contact = ARRAY_APPEND(e.contact,{「email」:「[email protected]」,「phone」:9876655555})for e IN d .details WHEN e.id = 1234 END WHERE META()。id =「k01」AND ANY e IN d.details SATISFIES e.id = 1234 AND {「email」:「[email protected]」,「phone」: 9876655555}不在e.contact END;

如果聯繫人目前沒有更新將會發生,這一個更好。

OR

UPDATE默認爲d SET e.contact = ARRAY_DISTINCT(ARRAY_APPEND(e.contact,{ 「電子郵件」: 「[email protected]」, 「手機」:9876655555}))爲電子IN d.details WHEN e.id = 1234 END WHERE META()。id =「k01」;

UPDATE default AS d SET e.contact = ARRAY_APPEND(e.contact,{「email」:「[email protected]」,「phone」:9876655555})FOR e IN d.details WHEN e.id = 1234 AND {「email」:「[email protected]」,「phone」:9876655555} NOT IN e.contact END WHERE META()。id =「k01」;

這會導致更新甚至存在聯繫人。

+0

如果我拿出電話號碼,它會在文檔中再次追加重複值,當我執行查詢1和查詢3時:UPDATE默認AS d SET e.contact = ARRAY_APPEND(e.contact,{「email」:「sri123 @ gmail.com「,」phone「:9876655555})FOR e IN d.details WHEN e.id = 1234 END WHERE META()。id =」k01「AND ANY e IN d.details SATISFIES e.id = 1234 AND {「email」:「[email protected]」}不在e.contact END; – Raj

+0

重複檢查整個文件或字段上。如果您需要檢查電子郵件更改條件。滿意e.id = 1234 AND AND「[email protected]」不在e.contact [*]。電子郵件結束 – vsr