MongoDB语句使用sh或者js文件

有时候我们需要向数据库中手动插入一些数据,但是如果数据格式本身比较复杂,并且需要插入多条数据的时候,直接子啊mongodb的shell上写js代码来像执行命令一样,虽然简单粗暴,但是对于比较复杂数据的情况是很不方便的,并且在shell上写js代码不方便修改数据等。

所以如果能把想要执行的js代码写成一个脚本,需要插入、修改数据的时候,只需要执行这个脚本就可以了,并且修改js代码也非常的方便

例如:在testdb数据库下的test集合中插入一条数据

在任意路径下新建一个insert.js的文件(文件名自己定义),内容如下

//testdb需要有用户权限
var url="mongodb://root:[email protected]:27017/testdb";
var db = connect(url);
db.test.insert({
    
    "name":"user5"});

执行:

# mongo insert.js 
MongoDB shell version v3.6.14
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session {
    
     "id" : UUID("ac15fe98-73e8-4220-a0df-ac3944213a7d") }
MongoDB server version: 3.6.14
connecting to: mongodb://127.0.0.1:27017/testdb
Implicit session: session {
    
     "id" : UUID("18b43954-ff1c-4a29-a405-7ecaef007f41") }
MongoDB server version: 3.6.14

查看结果:

> db.test.find()
{
    
     "_id" : ObjectId("5ad844efa46a748c5a90fe41"), "name" : "user5" }

数据插入成功。

还可以写成shell脚本

use testdb;
db.test.insert({
    
    "name":"user3"});

执行:

mongo -uroot -pxxx--authenticationDatabase admin < insert.sh 
MongoDB shell version v3.6.14
connecting to: mongodb://127.0.0.1:27017/?authSource=admin&gssapiServiceName=mongodb
Implicit session: session {
    
     "id" : UUID("89a381c6-1fdb-4482-a173-37ed083a749c") }
MongoDB server version: 3.6.14
2021-10-25T15:58:22.424+0800 E QUERY    [thread1] SyntaxError: illegal character @(shell):1:0
switched to db testdb
BulkWriteResult({
    
    
	"writeErrors" : [ ],
	"writeConcernErrors" : [ ],
	"nInserted" : 1,
	"nUpserted" : 0,
	"nMatched" : 0,
	"nModified" : 0,
	"nRemoved" : 0,
	"upserted" : [ ]
})

注意:执行shell脚本和js脚本不一样的,js文件中定义了mongdb的url地址。shell脚本是将文件内容作为输入,输入到命令行。js脚本中不能使用use db_name这样的语句。

猜你喜欢

转载自blog.csdn.net/chj_1224365967/article/details/120953873