JS写mongo命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS写mongo命令相关的知识,希望对你有一定的参考价值。

参考技术A   在命令行中写mongo的命令(shell)太过麻烦,需要一种更好的方式来书写mongo命令,推荐用JS来写shell命令并执行。在JS里写mongo的Shell命令大部分是相同的,只有小部分不一样。

  先新建一个mongo.js,现在模拟一个用户登录日志表的信息。

  然后执行该js文件, mongo mongo.js 。

经过查询发现已经成功地由JS写入mongo命令。

3用js文件写mongo命令+update命令

一、用js写一个模拟用户登录日志表的信息
var userName = "chengxiang"; //声明一个登录名
var timeStamp = Date.parse(new Date()); //声明一个时间戳
var jsonData = {"loginUnser":userName,"loginTime":timeStamp }; //组成json字符串
var db = connect(‘log‘); //链接数据库 链接的是哪一个数据库?
db.login.insert(jsonData); //插入数据

print(‘[demo]log print success‘); //没有错误则显示成功

命令行输入: mongo demo.js  启动服务
此时 通过 show dbs  查询就会发现 多了log这个服务  


二、批量插入和循环插入
批量插入比循环插入的速度要快很多,一般工作中我们使用批量插入。 demo如下:
1、循环插入:执行完毕大约需要 1744毫秒
var starTime = (new Date()).getTime(); //得到开始时间
var db = connect(‘log‘); //链接数据库


开始循环
for(var i = 0 ; i<5000; i++){
    db.test.insert({‘num‘:i});
}

var runTime = (new Date()).getTime()-starTime
print(runTime+"ms,OK")

2、批量插入:执行完毕大约需要  84毫秒
var starTime = (new Date()).getTime(); //得到开始时间
var db = connect(‘log‘); //链接数据库

var tempArray = []
for(var i = 0 ; i<5000; i++){
    tempArray.push({‘num‘:i});
}
db.test.insert(tempArray)

var runTime = (new Date()).getTime()-starTime
print(runTime+"ms,OK")



update命令合集--增删改查
//$set 用来修改一个指定的键值(key) 没有这个值就默认添加
// db.workmateArray.update({"name":"MinJie"},{"$set":{age:23}})

//$set 修改嵌套内容
// db.workmateArray.update({"name":"MinJie"},{"$set":{"skill.SkillThree":‘BBQ‘}})

//$unset 用于将key删除
// db.workmateArray.update({"name":"MinJie"},{‘$unset‘:{age:‘‘}})

//$inc 对数字进行计算,它是对value值的修改,对字符串不起作用。
// db.workmateArray.update({"name":"MinJie"},{‘$inc‘:{age:-2}})

//multi选项 multi设置为true则全部修改,false默认修改1个
// db.workmateArray.update({},{$set:{interset:[]}},{multi:true})

//upsert选项 在找不到匹配的值的情况加直接添加。比如name:chengxiang 数据库没有,则直动添加
// db.workmateArray.update({"name":"chengxiang"},{$set:{age:23}},{upsert:true})

// $pust 追加数组,追加数组中的值
// db.workmateArray.update({"name":"chengxiang"},{"$set":{interset:[‘dancing‘]}})
// db.workmateArray.update({"name":"chengxiang"},{"$push":{interset:‘web‘}})

// $ne 查找是否存在,如果值不存在则修改,如果值存在就不修改。相当于是没有这个东西我就给你,有就不给你了。
// db.workmateArray.update({"name":"chengxiang",‘interset‘:{"$ne":"web666"}},{"$push":{interset:"web666"}})

// $addToSet 查找值是否存在,不存在就push上去
// db.workmateArray.update({"name":"chengxiang"},{$addToSet:{interset:"web777"}})

// $each 批量追加,一次性追加多个值。先用$addToSet来判断是否存在,然后直接$each直接批量追加
// var bbq = [‘a‘,‘b‘,‘c‘]
// db.workmateArray.update({‘name‘:"chengxiang"},{$addToSet:{interset:{$each:bbq}}})

// $pop 删除数组的值,只删除一次,参数 1 是从最后面删除,参数 -1 是从最开始删除
// db.workmateArray.update({"name":"chengxiang"},{$pop:{interset:1}})

//数组定位修改 通过索引的方式来修改 数组
// db.workmateArray.update({"name":"chengxiang"},{$set:{"interset.0":‘dancing‘}})

 

以上是关于JS写mongo命令的主要内容,如果未能解决你的问题,请参考以下文章

5.配置mongo命令行

mongo在shell命令行直接执行js脚本

如何使用DB连接运行Mongo JS Shell脚本?

如何处理 mongo 脚本中的命令行参数?

mongodb连接失败connect failed, fail to connect安装问题,js:257:13

mongorc.js文件