मैं चाहता हूं कि एक डायनेमोडीबी आइटम में अनिवार्य रूप से एक कैप्ड सूची क्या है। मैं सूची के सामने किसी आइटम को प्रीपेड करने में सक्षम होना चाहता हूं, और फिर आइटम को पीछे से छोड़ दें यदि यह किसी निश्चित आकार से अधिक हो।एकल डायनेमो डीबी अपडेट ऑपरेशन में सूची को जोड़ और छंटनी करें?
मेरे उदाहरण में मैं 3 करने के लिए टोपी, आगे जोड़ते तत्व "6" सेट करते हैं और दिखाने से पहले/के बाद कहता है:
{ } -> { "myList": [6] }
{ "myList": [1] } -> { "myList": [6, 1] }
{ "myList": [3, 2, 1] } -> { "myList": [6, 3, 2] }
लेकिन मैं निम्नलिखित अद्यतन अभिव्यक्ति एक गठबंधन करने के लिए उपयोग नहीं कर सकते myList
पर SET
और REMOVE
आपरेशन:
# (":empty" set to an empty list in the value map)
SET myList = list_append(:v, if_not_exists(myList, :empty)) REMOVE myList[3]
(जावा में दस्तावेज एपीआई का उपयोग) एक अपवाद में इस अभिव्यक्ति के परिणाम का उपयोग करने का प्रयास:
Invalid UpdateExpression: Two document paths overlap with each other; must remove or rewrite one of these paths
अगर मैं दो अलग-अलग अपडेट अनुरोधों में SET
और REMOVE
विभाजित यह काम करेंगे। क्या कोई चाल है जो मुझे इसे एक ही अनुरोध में करने देगी?
हाँ, मुझे आश्चर्य नहीं है कि इसे सीधे एक ही ऑपरेशन में नहीं किया जा सकता है। मैं उम्मीद कर रहा था कि वहां कुछ चाल या काम हो सकता है जो इसे पूरा करेगा। (दो अलग-अलग अनुरोध करने से दौड़ की स्थिति के लिए दरवाजा खुलता है, साथ ही यदि आप समवर्ती अपडेट कर रहे हैं, हालांकि सौभाग्य से यह मेरे उपयोग के मामले में कोई समस्या नहीं है ...) – ryryguy
हाँ। यदि आप संख्याओं से निपट रहे हैं तो ज्यादातर मामलों में आप सशर्त अभिव्यक्तियों, रीट्रीज़, और परमाणु जोड़ और घटाने के संचालन के साथ दौड़ की स्थितियों को रोक सकते हैं। –