2013-03-15 20 views
8

Bireyin mongoimport kodunu kod içinde kullanmasına izin veren herhangi bir kütüphane/javascript kitaplığı var mı?Javascript/Node.js ile kod içinde mongoimport yürütme

Anlayışım için, mongoimport, metin giriş ortamını kullanabilmeniz için önce yürütmeniz gereken bir .exe gibi bir şeydir.

Kodumda mongoimport yürütmek ve sonra doğrudan kodumda gereken komutları çözümlemek mümkün mü?

Benim şu anki algoritma içerir:

fs.appendFile('log.txt',JSON.stringify(obj, null, 2)); 

obj fonksiyonları Sonra (hangi HTTP yanıtları ister)

var obj = {}; 
obj.url = hostNames[i]; 
obj.statusCode = res.statusCode; 
obj.headers = res.headers; 

node.js ait res yöntemiyle JSON.stringify içine ayrıştırmak ne belirten bir nesnedir Bu JSON belgesini MongoDB'ye aktarmak için mongoimport kullanıyorum.

mongoimport --host localhost -db scrapeapp -collection scrape --file log.txt --jsonArray

Bu yöntem

açıkça verimsizdir. Tüm bu adımları bir seferde yapmak isterim.

Yardım

+0

ile eşzamanlı olarak yapın MongoDB node.js sürücüsüne baktınız mı? Doğrudan bir node.js hizmetinden MongoDB'ye konuşmak istediğinizde kullanmak istediğiniz şey budur. Belgeler burada: http://docs.mongodb.org/ecosystem/drivers/node-js/ –

+0

James'in söylediklerini uzatmak için, mongoimport'un ne için kullanıldığı konusunda yanlış bir anlayışa sahip olduğunu düşünüyorum. Bir mongodb ile etkileşimlerinizin çoğu bir sürücüde gerçekleşecektir. Sürücü, veritabanınızdaki belgeleri (nesneleri) belirli bir dil aracılığıyla, bu durumda javascript'e eklemenize, güncelleştirmenize ve silmenize olanak tanır. Mongoimport, db'nizde normal eklemeler için kullanılmamalıdır, esas olarak diğer veri tabanları veya uygulamalar gibi diğer kaynaklardan dışa aktarılan verileri almak için kullanılır. – ACE

+0

Haklısınız. Şu anda MongoDB kullanımı ile ilgili bir yanlış anlama var. Şu anda birkaç aylık bir zaman diliminde analiz yapacağım birkaç (bin) siteden başlıkları kazıyorum. Algoritmamı, bir içe aktarma yapmak yerine başlığa göre insert() üstbilgisi yapmak için değiştireceğim. Ne düşünüyorsun? db.scrape.insert (JSON.stringify (obj, boş 2)); – theGreenCabbage

cevap

0

Ben hiçbir şekilde bir düğüm uzmanı değilim takdir - ama JSON dosyaları varolan varsa here açıklandığı veya çeşitli answers olduğu gibi, kabuk komutu olarak Düğüm içinde mongoimport yürütebilir.

+0

Bunun farkında olduğunu söyledi. Moğol kabuğunun yerine JavaScript'de 'mongoimport 'eşdeğerini nasıl yapılacağını soruyor. – Benny

+0

"Kodumda mongoimport'u çalıştırmak mümkün mü?" Diye sordu. Bağlantılı olduğum ilk makalede "Node.js ile Unix Komutu Yürüt" başlıklı bir teknik var. Ancak bunun muhtemelen verimlilik açısından aklındaki şeylerin farkında olmadığının farkındayım. – thomers

0

Bu benim kodunda böyle yaparız

let exec = require('child_process').exec 
let command = 'mongoimport -d database -c collection --file import.json' 
exec(command, (err, stdout, stderr) => { 
    // check for errors or if it was succesfuly 
    cb() 
}) 

ben kod erişilebilir olması yanında cb geçmesi yapmak veya zaman uyumsuz bir stil kullanmak yoksa olabildiğince sonra mongoimport komutunu exec ve child_process.execSync(command[,options])

İlgili konular