2012-04-03 14 views
10

क्या JSON ऑब्जेक्ट की सरणी को केवल एक कॉल के साथ एक मोंगोडब में सहेजने का कोई तरीका है? कुछ की तरह:केवल एक कॉल के साथ मोंगोस डीबी में ऑब्जेक्ट्स की सरणी को कैसे सहेजना है?

schemeObject.save(array_of_json_object, callback); 

मैं mongoosejs

+0

आप सही उत्तर अपडेट कर लें कर सकते हैं? –

+0

@IcyFlame आपकी लिंक्ड पोस्ट तकनीकी रूप से इस का एक डुप्लिकेट है। –

+0

@DanMandle सही! मैंने तारीखों को नोटिस नहीं किया। इंगित करने के लिए धन्यवाद। – IcyFlame

उत्तर

5

उपयोग कर रहा हूँ मैं mongooosejs के साथ अपने संभव नहीं लगता। हालांकि आप मोंगोडब के बैच डालने का उपयोग कर सकते हैं, जिसे मूल रूप से समर्थित किया जाता है।

सहायक लिंक:

http://www.mongodb.org/display/DOCS/Inserting#Inserting-Bulkinserts

https://groups.google.com/forum/#!msg/mongoose-orm/IkPmvcd0kds/bZuYCN_orckJ

+0

उत्तर दूसरे लिंक में मिलता है। धन्यवाद – jAckOdE

+3

अब सटीक नहीं है। इसके बजाए ऐसा करें: http://stackoverflow.com/a/22874288/687677 – superluminary

0

कैसे कुछ इस तरह के बारे में? मैं इसे पूरे सरणी के माध्यम से लूप पता .. न मुझे इस के लिए बिग ओ के बारे में पूछने .. शायद नहीं डालने के लिए सबसे अच्छा तरीका है, लेकिन किसी प्रकार की सिर्फ एक प्रारंभिक डेटा डंप के लिए काम करता है ..

var arr = // array of objects; 
    res = []; 

arr.forEach(function (item) { 
    item.save(function (err) { 
     res.push(err); 
     if (res.length === arr.length) 
     { 
      // Done 
     } 
    }); 
}); 
+0

जो एक बैच डालने वाला है, अगर यह एक-एक करके हो! – JehandadK

23

नहीं है MongooseJS के साथ बैच डालने का एक तरीका। मुझे यकीन नहीं है कि यह एक नई सुविधा है क्योंकि इस सवाल से पूछा गया/उत्तर दिया गया था, लेकिन मुझे लगा कि अगर कोई खोज से यहां आना है, तो उसे ऐसा करने का तरीका पता होना चाहिए। http://mongoosejs.com/docs/api.html#model_Model.create

+3

अगर हम नए दस्तावेज़ बनाना चाहते हैं तो यह काम करना चाहिए। किसी क्वेरी से लौटाए गए सरणी या दस्तावेज़ को अपडेट करने के बारे में कैसे? – jAckOdE

+0

इसके लिए, मुझे लगता है कि आपको परिणाम पर एक खोज() फिर एक के लिए() करना होगा, मानों को अपडेट करें और उनमें से प्रत्येक के लिए एक सहेजें() करें। लेकिन मैं खुद को मोंगोस के लिए काफी नया हूं। –

0

एक और वैकल्पिक हल है कि मैं का उपयोग किया है:

var array = [{ type: 'jelly bean' }, { type: 'snickers' }]; 
Candy.create(array, function (err, jellybean, snickers) { 
    if (err) // ... 
}); 

यहाँ डॉक्स कर रहे हैं। यदि आप वादे के साथ मोंगोज़ का उपयोग कर रहे हैं, तो आप इसे Q का उपयोग करके कर सकते हैं।

आप नीचे दिए गए कोड का उपयोग कर नेवला के लिए डिफ़ॉल्ट वादा के रूप में क्यू का उपयोग शुरू कर सकते हैं:

const mongoose = require('mongoose'); 
mongoose.Promise = require('q').Promise; 

तो फिर तुम नीचे मौजूद दस्तावेज़ों की एक सरणी बचा सकता है। आइए मान लें कि हम उपयोगकर्ता मॉडल की एक सरणी संग्रहित कर रहे हैं, जिसे मैंने users चर में दिखाया है।

Q 
    .all(users.map(curr => curr.save())) 
    .then((results) => { //do something }) 
    .catch((err) => { //handle error }) 

.save() वापसी एक q वादा और सरणी map समारोह का उपयोग कर, हम उपयोगकर्ता मॉडल सारणी का उपयोग करके वादा सरणी पैदा हो जाएगी होगा।

0

यह नेवला साथ काम करता है और साथ ही

Laptop.insertMany(laptopData, function (err, laptop) { 
    if (err) { 
    console.log(err); 
    }; 
    console.log(laptop); 
}); 
संबंधित मुद्दे