有时候我们需要向数据库中手动插入一些数据, 但是如果数据格式本身比较复杂, 并且需要插入多条数据的时候, 直接子啊 mongodb 的 shell 上写 js 代码来像执行命令一样, 虽然简单粗暴, 但是对于比较复杂数据的情况是很不方便的, 并且在 shell 上写 js 代码不方便修改数据等.
所以如果能把想要执行的 js 代码写成一个脚本, 需要插入, 修改数据的时候, 只需要执行这个脚本就可以了, 并且修改 js 代码也非常的方便
例如: 在 testdb 数据库下的 test 集合中插入一条数据,
在任意路径下新建一个 insert.js 的文件 (文件名自己定义), 内容如下:
- var url="mongodb://localhost:27019/testdb";
- var db = connect(url);
- db.test.insert({"name":"user5"});
执行:
- # mongo insert.js
- MongoDB shell version v3.4.14
- connecting to: mongodb://127.0.0.1:27017
- MongoDB server version: 3.4.14
- connecting to: mongodb://localhost:27019/testdb
- MongoDB server version: 3.4.14
查看结果:
- test-set:PRIMARY> db.test.find()
- { "_id" : ObjectId("5ad844efa46a748c5a90fe41"), "name" : "user1" }
- { "_id" : ObjectId("5ad8608a8de9df222390480e"), "name" : "user2" }
- { "_id" : ObjectId("5ad860998de9df222390480f"), "name" : "user3" }
- { "_id" : ObjectId("5ad860ba349d15f7f4a9ce9b"), "name" : "user4" }
- { "_id" : ObjectId("5ad860be8c80e45b6ab87b90"), "name" : "user4" }
- { "_id" : ObjectId("5ad860c0049eccbc93be69b0"), "name" : "user4" }
- { "_id" : ObjectId("5ad8611c7d1d4c1131c1a424"), "name" : "user4" }
- { "_id" : ObjectId("5ad8625a16805ab661da90ea"), "name" : "user5" }
数据插入成功.
还可以写成 shell 脚本,
- use testdb;
- db.test.insert({"name":"user4"});
执行:
- # mongo --port 27019 < test.sh
- MongoDB shell version v3.4.14
- connecting to: mongodb://127.0.0.1:27019/
- MongoDB server version: 3.4.14
switched to db testdb
WriteResult({ "nInserted" : 1 })
bye
注意: 执行 shell 脚本和 js 脚本不一样的, js 文件中定义了 mongdb 的 url 地址. shell 脚本是将文件内容作为输入, 输入到命令行. js 脚本中不能使用 use db_name 这样的语句.
来源: http://www.bubuko.com/infodetail-2567985.html