用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上工作会工作。