使用 mongo 脚本导入 JSON
Import JSON with mongo script
我正在尝试编写一个mongo脚本来从JSON
文件导入jsonArray
。我的脚本是.js
格式,我在 mongo shell 中使用load()
命令执行它。可以用mongo script
来做吗?
我知道我可以用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}});
}
这个问题还有另一个答案。 即使它有点旧,我也会回应。
可以使用 mongo 外壳来做到这一点。
您可以将 JSON 转换为有效的 JavaScript,方法是在它前面加上 var myData=
然后使用 load() 命令加载 JavaScript。 在 load() 之后,您将能够通过 myData 对象从 mongo 脚本中访问您的数据。
数据.js
var myData=
[
{
"letter" : "A"
},
{
"letter" : "B"
},
{
"letter" : "C"
}
]
阅读.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() 进行输出。 使用标准重定向将数据输出到文件。
写.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);
shebang line(#!)可以在Unix类型的操作系统(Linux或MacOS)上运行,他们也应该在Windows上使用Cygwin。
可以使用 mongo shell 中未记录的cat()
函数将文件内容作为文本获取:
var text = cat(filename);
如果您有兴趣,cat()
和其他未记录的实用程序(如writeFile
)在此文件中定义:shell_utils_extended.cpp
有了文件的内容,你可以根据需要修改它,或者直接把它传递给JSON.parse
来获取JavaScript对象:
jsObj = JSON.parse(text);
但要小心:不幸的是,JSON.parse
在 JSON 解析能力的意义上并不等同于mongoimport
工具。
mongoimport
能够以规范格式解析Mongo的扩展JSON。(例如,规范格式文件由bsondump
和mongodump
创建。有关 JSON 格式的更多信息,请参阅 MongoDB 扩展 JSON)。
JSON.parse
不支持规范的 JSON 格式。它将读取规范格式输入并返回 JavaScript 对象,但以规范格式 JSON 存在的扩展数据类型信息将被忽略。
不,mongo shell 没有像成熟的编程环境那样从文件中读取和写入的能力。使用 mongoimport,或者用带有官方驱动程序的语言编写脚本。Node.js的语法非常接近mongo shell,尽管Node.js是一个异步/事件驱动的编程环境。Python/PyMongo将是类似的,如果你不想处理使用回调的结构逻辑,那么很容易学习。
我知道这无关紧要,但是,每次我需要将一些 json 导入我的 mongo db 时,我都会做一些害羞的复制、粘贴和运行,直到我受够了!!如果你遭受同样的痛苦,我v写了一个小批量脚本来为我做这件事。心满意足?
https://github.com/aminjellali/batch/blob/master/mongoImporter.bat
@echo off
title = Mongo Data Base importing tool
goto :main
:import_collection
echo importing %~2
set file_name=%~2
set removed_json=%file_name:.json=%
mongoimport --db %~1 --collection %removed_json% --file %~2
goto :eof
:loop_over_files_in_current_dir
for /f %%c in ('dir /b *.json') do call :import_collection %~1 %%c
goto :eof
:main
IF [%1]==[] (
ECHO FATAL ERROR: Please specify a data base name
goto :eof
) ELSE (
ECHO @author amin.jellali
ECHO @email a.j.amin.jellali@gmail.com
echo starting import...
call :loop_over_files_in_current_dir %~1
echo import done...
echo hope you enjoyed me
)
goto :eof
- 如何将JSON数据导入我的ejs模板
- 如何将.json文件作为参数导入.js文件并使用命令行启动它
- 通过内部数组将JSON数据导入D3.js+Google Map
- 如何在Javascript中从Json数组导入值
- 将Excel/CSV文件中的数据导入angularjs-json对象中
- 将MySQL中的JSON导入Google图表
- 高图表数据导入 JSON - 格式
- 在 d3.js 中导入 json 文件
- 导入的JSON几何体不随骨骼移动
- 需要帮助,通过Python和AJAX将Json导入我的html
- 导入 JSON 以用作 GoogleMaps Marker 的数组
- 使用 mongo 脚本导入 JSON
- 将 JSON 数据导入 DOM 错误
- 如何导入 json 文件来解析它
- 将JSON文件导入到Grunt服务器上运行的Angular应用程序中
- JSON+Javascript/jQuery.如何从 json 文件导入数据并对其进行解析
- 如何导入外部 JSON 并在 php 中显示
- 如何使用 Meteor 从 API 导入 http 请求(JSON 格式)
- 将 Python Flask JSON 字典导入 JavaScript 错误
- 在FOR之外引用JSON导入对象时遇到问题