2015-06-07 10 views
7

मैं इस के साथ कुछ समस्या है, जो क्या यह मुश्किल बनाने, इसलिए का उपयोग कर MongoDB में json आयात करने के लिए कैसे ...नेवला

मैं नेवला और MongoLab उपयोग कर रहा हूँ, मैं डेटा स्टोर और यह सिर्फ ठीक प्राप्त कर सकते हैं , लेकिन मुझे एक ऐसी प्रणाली चाहिए जो मुझे डेटाबेस का बेस बीज करने की अनुमति दे।

मेरे पास संग्रह के लिए बनाई गई स्कीमा हैं, लेकिन कोई भी डेटा नहीं चला है क्योंकि कोई डेटा नहीं है, इसलिए संग्रह सामान्य नहीं होने के कारण मैं सामान्य मोंगोइम्पोर्ट चलाने की प्रतीत नहीं कर सकता।

मैं अपने नोड सर्वर में कुछ जोड़ना चाहता हूं ताकि अगर संग्रह मौजूद न हो या खाली हो, तो यह संग्रह के लिए एक स्कीमा लोड करता है और फिर बीज डेटा के लिए जेसन डालता है।

तो मैं इस है ...

var Club = require('./schemas/Club'); 

मैं सामान्य रूप से Club.find, या Club.save आदि का उपयोग करें, ठीक काम कर रहा thats।

मैं केवल क्लब संग्रह में ऑब्जेक्ट्स की एक सरणी के विरुद्ध एक सहेजना चाहता हूं जिसे इसे बनाने की आवश्यकता है।

मैंने मोंगोस-फ़िक्स्चर में देखा लेकिन इसे वर्षों में अपडेट नहीं किया गया है, और संभवतया अतिरिक्त कोड की आवश्यकता के बिना ऐसा करने का एक तरीका है, क्योंकि मेरे पास स्कीमा परिभाषित है, और जेसन तैयार है।

यह सफलता कार्यक्रम है जब मुझे लगता है कि मैं चेक और आयात करना चाहता हूं।

mongoose.connection.on('open', function() { 
    console.log('mongoose.connection.opened'); 
}); 

इसके अलावा, विचार करने के लिए, अगर मैं दो संग्रह बनाना चाहता था, और जब यह ObjectId() पहला संग्रह में आइटम के लिए उत्पन्न करता है, मैं एक रेफरी के रूप में दूसरा संग्रह में उन का उपयोग करना चाहते कल्पना कर सकते हैं ।

बस क्लब ऑब्जेक्ट्स को मान लें कि केवल एक स्ट्रिंग प्रॉपर्टी है।

// contents of data/club.json 
[ 
    { 'name' : 'Barcelona' }, 
    { 'name' : 'Real Madrid' }, 
    { 'name' : 'Valencia' } 
] 

किसी भी मदद की बहुत सराहना

उत्तर

9

अगर मैं यह अच्छी तरह से समझते हैं, आप सभी की जरूरत नेवला से अपने MongoDB संग्रह करने के लिए एक JSON दस्तावेज़ अपलोड करने के लिए है। यह देखते हुए कि आपके मॉडल का नाम Club है, आप Club.collection के माध्यम से कच्चे ड्राइवर विधियों तक पहुंच सकते हैं। और आप जो चाहते हैं उसे प्राप्त करने के लिए insertMany का उपयोग करें।

यहाँ एक अकेले खड़े उदाहरण है (रोचक सामग्री अंत में है):

> var mongoose = require('mongoose') 
> var assert = require('assert') 

> mongoose.connect('mongodb://localhost/test'); 

> var Schema = mongoose.Schema 
> var clubSchema = new Schema({ 
... name: String, 
... }) 

> var Club = mongoose.model('Club', clubSchema) 

// Now, the interesting part: 
> data = [ 
... { 'name' : 'Barcelona' }, 
... { 'name' : 'Real Madrid' }, 
... { 'name' : 'Valencia' } 
... ] 
> Club.collection.insertMany(data, function(err,r) { 
...  assert.equal(null, err); 
...  assert.equal(3, r.insertedCount); 
... 
...  db.close(); 
... }) 

और मोंगो शैल से जाँच:

> db.clubs.find() 
{ "_id" : ObjectId("5574b464b680174d79e37601"), "name" : "Barcelona" } 
{ "_id" : ObjectId("5574b464b680174d79e37602"), "name" : "Real Madrid" } 
{ "_id" : ObjectId("5574b464b680174d79e37603"), "name" : "Valencia" } 
0

कभी कभी शेल स्क्रिप्ट में मदद कर सकते हैं:

for filename in *; do mongoimport -d mydb -c $filename --jsonArray done 

यह भी देखें: MongoDB Bulk import using mongoimport from Windows folder

+0

मोंगोइम्पोर्ट का उपयोग करने वाली समस्या का सामना करना पड़ा था कि हमने केवल हमारे डेटा को मोंगोस एडाप्टर के माध्यम से सत्यापित किया है और इससे यह बाईपास हो जाता है। इसलिए हमें यह जांचना पड़ा कि जेसन के सभी क्षेत्रों में सही प्रारूप इत्यादि था या हमारे मोंगोड स्कीमा – IroNEDR

+0

में सत्यापन में निर्माण करना है, यह टिप्पणी आपकी स्थिति में मदद नहीं कर सकती है। :( – sstruct