用mongo脚本导入JSON

问题描述:

我想写一个mongo脚本JSON文件导入jsonArray。我的脚本是.js格式,我用load()命令执行mongo shell。是否可以用mongo script做到这一点?用mongo脚本导入JSON

我知道我可以用mongoimport代替。但我想知道一种用脚本来做到这一点的方法。

其中进口部分缺失在下面给出我当前脚本的内容..

var db = connect("localhost:27017/fypgui"); 
//Import json to "crimes" collection here 
var crimes = db.crimes.find(); 
while (crimes.hasNext()){ 
    var item = crimes.next(); 
    var year =(item.crime_date != null)?(new Date(item.crime_date)).getFullYear():null; 
    db.crimes.update({_id: item._id}, {$set: {crime_year: year}}); 
} 

没有,蒙戈外壳没有从文件中像fully-读写能力成熟的编程环境。使用mongoimport,或使用官方驱动程序以一种语言编写脚本。尽管Node.js是一个异步/事件驱动的编程环境,但Node.js的语法与mongo shell非常接近。如果您不想处理使用回调的逻辑结构,Python/PyMongo将会类似且易于学习。

还有另一个这个问题的答案。即使有点老,我会回应。

可以用mongo shell做到这一点。

您可以将您的JSON转换为有效的JavaScript前缀为var myData=,然后使用load()命令加载JavaScript。在load()之后,您将能够通过myData对象从您的mongo脚本中访问您的数据。

data.js

var myData= 
[ 
     { 
       "letter" : "A" 
     }, 
     { 
       "letter" : "B" 
     }, 
     { 
       "letter" : "C" 
     } 
] 

read.js

#!/usr/bin/mongo --quiet 

// read data 

load('data.js'); 

// display letters 

for (i in myData) { 
    var doc = myData[i]; 
    print(doc.letter); 
} 

对于写JSON是最容易被你的结果只是加载到一个对象。以var result={}开始初始化对象,然后在末尾使用printjson()输出。使用标准重定向将数据输出到文件。

write.js

#!/usr/bin/mongo --quiet 

var result=[]; 

// read data from collection etc... 
for (var i=65; i<91; i++) { 
    result.push({letter: String.fromCharCode(i)}); 
} 

// output 
print("var myData="); 
printjson(result); 

的家当行(#!)在Unix类型的操作系统(Linux或Mac系统),他们也应该在Windows上使用Cygwin上工作会工作。