mongodb和mysql的语法_mongoDB 常用语法使用

mongoDB 常用语法使用

删除数据库或集合

db.集合.drop( ):删除整个集合,这个在实际工作中一定要谨慎使用,如果是程序,一定要二次确认。

db.dropDatabase( ):删除整个数据库,在删除库时,一定要先进入数据库,然后再删除。实际工作中这个基本不用,实际工作可定需要保留数据和痕迹的。

批量插入db.test.insert([

{"age":1},

{"age":2},

{"age":3}

])修改update

基础update修改器

$set修改器 (用来修改一个指定的键值(key))db .集合名称.update({"id":"1"},{"$set":{age:21}})

修改嵌套内容db.集合名称.update({"id:1"},$set:{user.name:"xiaoming"})

$unset用于将key删除db.集合名称.update({id:1},{$unset:{age:""}})

$inc 用于计算并且修改db.集合名称.update({id:1},{$inc:{age:-2}}) //本身减2

$multi选项 (用于批量插入/循环插入)db.集合名称。update({},{sex:'男'},{$multi:true})

$upsert选项** (有更新/没有添加)db.集合名称.update({},{$set:{sex:"男"},{$upsert:true}})

update数组修改器 (例如:集合中有一个空数组:arr=[])

$push (追加数组)db.集合名称.update({id:1},{$push:{arr:"hello"}}) // 相当于 arr.push("hello")

嵌套属性追加数组db.集合名称.update({id:1},{$push:{user.arr:"hello"}})

$ne 查找是否存在 (存在不追加,不存在追加)db.集合名称.update({id:1},{arr:{$ne:"hello"},{$push:{arr."hello"}})

$addToSet (类似于$ne,她更简单一些)db.集合名称.update({id:1},{$addToSet:{arr:"hello"}})

$each 批量追加var newArr=["hello","world"];

db.集合名称.update({id:1},{$addToSet:{arr:{$each:newArr}})

$pop 删除数组db.集合名称.update({id:1},{$pop:{arr:1}}) // 1 代表尾部删除  \-1 代表头部删除

数组指定位数修改 (类似于对象形式,毕竟数组也是对象嘛)db.集合名称.update({id:1},{$set:{arr.1:"world"}})

状态返回db.集合名称.update({id:1},{$set:{age:18}})

var status=db.runcommand({getLastError:true})

printjson(status)

返回:{

"connectionId" : 1,

"updatedExisting" : true,  // 判断是否操作成功

"n" : 2,

"syncMillis" : 0,

"writtenTo" : null,

"err" : null,

"ok" : 1

}

操作安全 findAndModify 翻译: 找到并修改var findAndModifyObj ={

findAndModify:"集合名称",

query:{id:1}, // 通过什么查找

sort:false, //排序

remove:false, 是否删除 与update冲突 只能写一个

upsert:false, 没有找到是否添加

fields:[],//需要返回的字段

update:{$set:{age:18}}, //更新

new:true    //更新完成,需要查看结果,如果为false不进行查看结果

}

var result=db.runCommand(findAndModifyObj);

printjson(result)

查询 find()

简单查询db.集合名称.find() //全部查询

db.集合名称.find({id:1}) //根据id等于1查询

筛选字段db.集合名称.find({id:1},{name:true,age:false}) //返回数据中不含有age

不等修饰符

b4fb3d2d8f6f8a240b7d9793a0cfe673.pngdb.集合名称.find({id:{$lt:5}}) //查找id字段小于5的所有数据

$in 查询一个区间db.集合名称.find({id:{$in:[1,6]}}) // 查询id字段在1到6之间的数据

$or 条件 或db.集合名称.find({id:{$or:[

{$in:[1,6]},

{age:18}

]}}) // 查询id字段在1到6之间或年龄为18岁的数据

$and 条件 与db.集合名称.find({id:{$and:[

{$in:[1,6]},

{age:18}

]}}) // 查询id字段在1到6之间并且年龄为18岁的数据

find() 数组查询db.集合名称.find({arr:['hello','world']}) //精确查找 只有arr等于['hello','world']

db.集合名称.find({arr:'hello'}) //模糊查找 arr中含有'hello'即可

db.集合名称.find({arr:{$all:['hello','world']}}) //并且关系 含有'hello'并且含有'world' 参能满足条件

db.集合名称.find({arr:{$in:['hello','world']}}) //或关系 含有'hello'或者含有'world' 参能满足条件

db.集合名称.find({arr:{$size:2}}) //根据数组长度查找

db.集合名称.find({},{arr:{$slice:2}}) //截取 返回数据只显示数组前两位 最后一项的话 直接写-1即可

find的参数使用方法query:这个就是查询条件,MongoDB默认的第一个参数。

fields:(返回内容)查询出来后显示的结果样式,可以用true和false控制是否显示。

limit:返回的数量,后边跟数字,控制每次查询返回的结果数量。

skip:跳过多少个显示,和limit结合可以实现分页。

sort:排序方式,从小到大排序使用1,从大到小排序使用-1。

limit与skip可用于表格分页dbd .workmate.find(

{}, //查询条件

{name:true,age:true,_id:false} //返回内容

).limit(1).skip(2).sort({age:1});

hansNext() 是否有下一条数据var data=db.项目名称.find()

while(data.hasNext()){

printjson(data.next)

}

data.forEach(function(data){

printjson(data)

})

数据库管理:创建,修改,删除用户

创建用户:db.createUser({

user:"用户名",

pwd:"123456",

customData:{

name:'随便起名',

age:18,

},

roles:['read'] // 只有读的权限

})

当然我们还可以单独配置一个数据库的权限,比如我们现在要配置list数据库的权限为读写:db.createUser({

user:"用户名",

pwd:"123456",

customData:{

name:'随便起名',

age:18,

},

//对list数据库有读写的权限 其他只有读的权限~~~~

roles:[

{

role:"readWrite",

db:"list"

},

'read'

]

})

内置角色:数据库用户角色:read、readWrite;

数据库管理角色:dbAdmin、dbOwner、userAdmin;

集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManage;

备份恢复角色:backup、restore;

所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

超级用户角色:root

内部角色:__system

查找用户信息db.system.users.find()

删除用户:db.system.users.remove({user:"用户名"})

建权:

有时候我们要验证用户的用户名密码是否正确,就需要用到MongoDB提供的健全操作。也算是一种登录操作,不过MongoDB把这叫做建权。db.auth("jspang","123456")

如果正确返回1,如果错误返回0。(Error:Authentication failed。)

启动建权

重启MongoDB服务器,然后设置必须使用建权登录。mongod --auth

启动后,用户登录只能用用户名和密码进行登录,原来的mongo形式链接已经不起作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值