有时候我们需要向数据库中手动插入一些数据,但是如果数据格式本身比较复杂,并且需要插入多条数据的时候,直接子啊mongodb的shell上写js代码来像执行命令一样,虽然简单粗暴,但是对于比较复杂数据的情况是很不方便的,并且在shell上写js代码不方便修改数据等。
所以如果能把想要执行的js代码写成一个脚本,需要插入、修改数据的时候,只需要执行这个脚本就可以了,并且修改js代码也非常的方便。
那么如何运行一个js脚本?
方法一(最简单的):
- 如果我们需要想某一数据库中的某一个集合中插入数据
首先在任意目录下, 新建一个insert.js
文件,在其中加入内容:
#获取数据库对外提供的可访问的端口号27017,以及要连接到的指定数据库nodebb
var url = "mongodb://localhost:27017/nodebb";
#链接到上述指定的数据库
var db = connect(url);
#插入数据到数据库nodebb中的某一个集合的嵌套中的语句
db.objects.update({"pid": 102}, { $push: {
"comments": {
"pid": 103,
"comid": 1,
"uid": 1,
"comContents": "我不管,我最美,啊哈哈哈哈"
}
}
});
- 然后切换到
insert.js
文件所在的目录下
执行:$ mongo insert.js
即可
方法二:
其实就只执行:`$ ./mongo 127.0.0.1:27017/test test.js`
说明:
(1)./mongo : # mongo客户端
(2)127.0.0.1:27017/test :
* 127.0.0.1: mongo服务所在机的ip地址.
* 27017: 叫port, mongo服务对外提供的访问端口(mongodb一般为27017)
* test : 需要连接的数据库名字;
(3)test.js : 待运行的脚本
下面来说说怎么js脚本怎么写,又怎么执行:
首先新建一个test.js
的文件:
/test.js
db.objects.update({"pid": 103}, { $push: {
"comments": {
"pid": 103,
"comid": 1,
"uid": 1,
"comContents": "我不管,我最美,啊哈哈哈哈"
}
}
});
找到linux中安装mongod源所在的目录:
执行命令:$ which mongod
切换到bin目录下:$ cd /usr/bin
或者直接:$ /usr/bin 然后 回车
然后在刚刚新建的test.js
所在的目录下执行:$ pwd
然后将这个路劲复制一下,在最后加上/test.js
,如:
/home/qmm/internship-TW/secondNodeBB/nodebb/isnertData-mongo/test.js
然后回到刚才的bin目录下执行:
一定要保证mongodb数据库服务器是开启状态的,没有开启数据局服务器是不能执行成功的
$./mongo 127.0.0.1:27017/nodebb /home/qmm/internship-TW/secondNodeBB/nodebb/isnertData-mongo/db.js
来我们去看看我们刚刚的操作都做了什么,去数据库中去查一下js脚本执行后,数据库中有没有发生变化呢(js脚本执行了3次):
执行之前的集合:
执行之前数据库的集合长这样执行脚本之后:
执行了3次js脚本,果然插入了3条comments