2012-11-23 12 views
5

संग्रह एबीसी से दस्तावेज़ों को डुप्लिकेट करने और उन्हें संग्रह में कॉपी करने के लिए कैसे करें यदि स्थिति {conditionB: 1} जैसी कोई शर्त है और मूल दस्तावेजों में निहित विवरण जानने के बिना ts_imported जैसे टाइमस्टैम्प जोड़ें?एसक्यूएल INSERT के लिए mongodb अनुवाद ... चुनें

मैं जो mysql के INSERT ... SELECT ...

+0

मैं एक MongoDB विशेषज्ञ नहीं हूँ में काम करता है, लेकिन मैं था इस पर कुछ शोध कर रहे हैं, और मेरी समझ यह है कि आपको प्रत्येक ऑब्जेक्ट को लूप में पढ़ना होगा और उसे सहेजने से पहले किसी भी मान (जैसे आईडी, या टाइमस्टैम्प) सेट करना, डीबी को फिर से सहेजना होगा। – Diego

उत्तर

14

आप एक समान परिणाम प्राप्त करने के mongoshell से जावास्क्रिप्ट का उपयोग कर सकते हैं:

db.collectionABC.find({ conditionB: 1 }). 
forEach(function(i) { 
    i.ts_imported = new Date(); 
    db.collectionB.insert(i); 
}); 
+0

यह गतिशीलता में समान नहीं है ... यह आपके ऐप में क्लाइंट पक्ष करने जैसा ही है। – Sammaye

+1

दरअसल, लेकिन प्रश्न एक संग्रह से दस्तावेज़ों को प्रतिलिपि बनाने के बारे में था, जबकि समान रूप से फ़ील्ड को 'INSERT ... SELECT' में जोड़ना था। और भी, mongoshell mongodb के लिए मुख्य इंटरफेस है और सभी प्रश्न जावास्क्रिप्ट होने के नाते, मेरी विनम्र राय में जावास्क्रिप्ट क्वेरी, आरडीबीएमएस के लिए एक एसक्यूएल में समेकित हो सकती है। – Eric

+0

वास्तव में, हालांकि जेएस सिर्फ एक और चालक है, इसका मतलब यह नहीं है कि यह मुख्य बात है जो मोंगोडीबी के साथ पूर्व-बंडल में आता है, लेकिन हाँ, यदि ओपी भ्रमित हो गया तो मैंने सोचा कि मैं यह कहूंगा कि इसकी गतिशीलता एसक्यूएल में यह कैसे काम करता है यह कोड अलग है, इसलिए बहुत से लोग सोचते हैं कि कंसोल किसी भी तरह विशेष नहीं है जब यह नहीं है। – Sammaye

1

MongoDB के समान है क्वेरी करने की क्षमता उस तरह का नहीं है आप (क्वेरी के अंदर) जिससे पहले से चर पर आधारित दूसरे संग्रह में सम्मिलित कर सकते हैं MongoDB के लिए एक सरल बराबर नहीं पा सके संग्रह।

आपको उस दस्तावेज़ को पहले खींचने और फिर उस पर काम करने की आवश्यकता होगी।

आप तकनीकी रूप से इसके लिए एक एमआर का उपयोग कर सकते हैं लेकिन मुझे लगता है कि यह आपके परिदृश्य के लिए काम नहीं करेगा।

+0

आपके उत्तर को असहमत ... –

+0

@AmolMKulkarni कैसे? – Sammaye

0

ऐसा लगता है कि इस क्रम पीढ़ी के संदर्भ http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/

+1

का उपयोग किया गया था ध्यान दें कि [केवल-लिंक उत्तर] (http://meta.stackoverflow.com/tags/link-only-answers/info) निराश हैं, SO जवाब समाधान के लिए खोज का अंत बिंदु होना चाहिए (बनाम।फिर भी संदर्भों का एक और स्टॉपओवर, जो समय के साथ पुराना हो जाता है)। लिंक को संदर्भ के रूप में रखते हुए, यहां स्टैंड-अलोन सारांश जोड़ना पर विचार करें। – kleopatra

संबंधित मुद्दे