2016-08-16 10 views
10

मैं node.js और Mongo.db का उपयोग कर रहा हूं (मैं मोंगो पर नया हूं)।MongoDb: यदि मौजूद नहीं है तो सरणी में तत्व जोड़ें

Tag : { 
    name: string, 
    videoIDs: array 
} 

विचार है, सर्वर एक JSON की तरह

JSON: { 
    name: "sport", 
    videoId: "34f54e34c" 
} 

इस JSON के साथ, प्राप्त करता है यह एक ही नाम के साथ टैग खोजने के लिए और में अगर जाँच करने के लिए है: मैं इस तरह के एक दस्तावेज है सरणी में videoId है, यदि नहीं, तो इसे सरणी में डालें।

मैं सरणी कैसे जांच सकता हूं और डेटा जोड़ सकता हूं?

+0

'सरणी में इसमें वीडियो आईडी है' आप किस सरणी के बारे में बात कर रहे हैं? – Shrabanee

उत्तर

25

आप $addToSet ऑपरेटर का उपयोग सरणी में तत्व जोड़ने से पहले मौजूद जांचने के लिए कर सकते हैं।

db.tags.update(
    {name: 'sport'}, 
    {$addToSet: { videoIDs: "34f54e34c" } } 
); 

इस अद्यतन बयान उदाहरण में, MongoDB टैग दस्तावेज है जो नाम == 'खेल' से मेल खाता है मिलेगा, और फिर जाँच videoIDs सरणी '34f54e34c' शामिल है या नहीं। यदि नहीं, तो इसे सरणी में संलग्न करें।

$ addToSet का विस्तृत उपयोग कृपया here पढ़ें।

+0

@albert, हाँ आप एक तत्व डाल सकते हैं। "videoIDs" एक सरणी है, और यदि आप मौजूद नहीं हैं, तो आप स्ट्रिंग "34f54e34c" डालना चाहते हैं, है ना? – yellowB

+0

यह काम करता है, अगर वहां नहीं है तो यह नए आईडी जोड़ता है, डुप्लीकेट – albert

+2

से परहेज करना क्या होगा यदि फ़ील्ड 'वीडियोआईडी' शुरू करने के लिए मौजूद नहीं है? –

1

मैं इसे परीक्षण नहीं किया है, लेकिन आप की तरह कुछ की कोशिश कर सकते हैं:

yourDb.find({ name: "sport", 
       videoIDs: { $in: ["34f54e34c"] } }) 
     .update({$addToSet: { videoIDs: "34f54e34c" }}); 

आप कैसे की जरूरत है: NodeJS कार्यान्वयन में MongoDB, आप शुरू कर सकते हैं साथ:

http://jsfiddle.net/1ku0z1a1/

2

$ addToSet ऑपरेटर दस्तावेज़ में खाली या मौजूदा सरणी के लिए जाँच करें।

db.col_name.update({name :"name_for_match"},{$addToSet : { videoId : "video_id_value"}}) 
संबंधित मुद्दे