mongodb入门教程

网友投稿 696 2022-09-01

mongodb入门教程

mongodb入门教程

MongoDB基本知识

-和安装

官网-:路由服务器 mongod 服务器 mongo 客户端

比较运算符

符号

含义

$lt

<

$lte

<=

$gt

>

$gte

>=

$ne

!=

1是升序,-1是降序

操作

显示所有命令用法

db.help()

基本操作

显示所有数据库 show dbs 切换数据库,如果没有则会在需要的时候进行创建 use test 显示当前所在数据库db关闭数据库 db.dropDatabase()查看表 show collections show tables删除表 db.test.drop() 查看集合的索引 db.table.getIndexes()

创建

创建一个用户信息db.test.insert({"name":"lili","age":20,"sex":"female"})

更新

将processed字段为1的值改为0db.mpData.updateMany({processed:1},{$set:{processed:0}})和上面一样,更新一条db.mpData.update({processed:1},{$set:{processed:0}})

$set指定一个键并更新键值,若键不存在则创建

删除

删除所有文档,不会删除集合本身,也不会删除集合的元信息db.test.remove({})

查询

插入一条数据db.test.insert({x:1}) 插入数据,通知指定_id字段 db.test.insert({x:2,_id:1}) 插入97条数据 for(i=3;i<100;i++)db.test.insert({x:i}) 查看数据总数 db.test.count() 查询时跳过前三条数据,限制返回数据为2条,同时对x字段进行排序 db.test.find().skip(3).limit(2).sort({x:1}) 用find进行查看,函数参数可以为空,返回所有数据 db.test.find() 查找x为1的数据 db.test.find({x:1}) 将x为1的数据变为x为999 db.test.update({x:1},{x:999}) 有多个字段时进行修改 db.test.insert({x:100,y:100,z:100}) 把这个数据整个变成y:999 db.test.update({z:100},{y:999}) 只修改y字段的值为999 db.test.update({z:100},{$set:{y:999}}) 在更新一条不存在的数据时自动创建 db.test.update({y:50},{y:60},true) update只会更新第一条找到的数据,同时更新时可写成如下形式 将多条c为1的数据设置为c为2 db.test.update({c:1},{$set:{c:2}},false,true) 数据的删除与查询类似接受一个参数,删除操作不允许不传参数 db.test.remove({c:2}) 对x创建索引,x为1代表正向排序,x为-1代表逆向排序 db.table.ensureIndex({x:1})

复制

db.test(复制源表).find().forEach(function(x){ db.target(目的表).insert(x);})

用户操作

创建用户db.createUser({user:"tom", pwd:"123", roles:[{role:"dbAdmin", db:"testdb"}]})查询用户use admin;db.system.users.find();删除tom用户db.system.users.remove({user:"tom"})查看当前用户权限db.runCommand({usersInfo:"tom", showPrivileges:true})修改密码db.changeUserPassword("tom", "123456")启用用户db.auth("tom", "123")

用户具体的角色有

角色名

解释

read

允许用户读取指定数据库

readWrite

允许用户读写指定数据库

dbAdmin

允许用户在指定数据库中执行管理函数,如索引创建,删除,查看统计或访问system.profile

userAdmin

允许用户向system.users集合写入,可以找指定数据库里创建,删除和管理用户

clusterAdmin

只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限

readAnyDatabase

只在admin数据库中可用,赋予用户所有数据库的读权限

readWriteAnyDatabase

只在admin数据库中可用,赋予用户所有数据库的读写权限

userAdminAnyDatabase

只在admin数据库中可用,赋予用户所有数据库的userAdmin权限

dbAdminAnyDatabase

只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限

root

只在admin数据库中可用。超级账号,超级权限

常见的查询索引

_id索引

_id索引是绝大多数集合默认建立的索引 对于每个插入的数据,MongoDB都会自动生成一条唯一的_id字段

单建索引

单键索引是最普通的索引 与_id索引不同,单键索引不会自动创建 如记录为{x:1,y:2,z:3}在x字段上创建索引

多键索引

多键索引与单键索引创建形式相同,区别在于字段的值 单键索引:值为一个单一的值,例如字符串,数字或者日期 多键索引:值具有多个记录,例如数组 db.table.insert({x:[1,2,3,4,5]}) MongoDB为x创建了一个多键索引

复合索引

当我们查询的条件不只有一个时,就需要建立复合索引

插入{x:1,y:2,z:3}记录db.table.insert({x:1,y:1,z:1})想按照x与y的值查询创建索引db.table.ensureIndex({x:1,y:1})使用{x:1,y:1}作为条件进行查询db.table.find({x:1,y:1})

过期索引

过期索引:是在一段时间后会过期的索引在索引过期后,相应的数据会被删除这适合存储在一段时间之后会失效的数据比如用户的登录信息,存储的日志

在time字段上建立过期索引,在10秒后删除 db.table.ensureIndex({time:1},{expireAfterSeconds:10}) 在time字段上插入当前时间 db.table.insert({time:new Date()})

过期索引的限制

存储在过期索引字段的值必须是指定的时间类型说明:必须是ISODate或者ISODate数组,不能使用时间戳,否则不能被自动删除如何指定了ISODate数组,则按照最小的时间进行删除过期索引不能是复合索引删除时间不是精确说明:删除过程是由后台程序每60s跑一次,而且删除也需要一些时间,所以存在误差

全文索引

建立方法

值固定,为text db.table.ensureIndex({key:"text"}) db.table.ensureIndex({key_1:"text",key_2:"text"}) 为所有字段建立全文索引 db.table.ensureIndex({"$**":text"})

使用全文索引查询

db.table.find({$text:{$search:"coffee"}}) 查询包含aa或者bb或者cc的内容 db.table.find({$text:{$search:"aa bb cc"}}) 查询包含aa或者bb,但不包含cc的字符串 db.table.find({$text:{$search:"aa bb -cc"}}) 查询包含aa和bb和cc的内容,包内容用"括起来即可\为转义字符 db.table.find({$text:{$search:"\"aa\" \"bb\" \"cc\""}})

db.table.ensureIndex({“article”:“text”}) db.table.insert({“article”:“aa bb”}) db.table.insert({“article”:“aa bb cc dd”}) db.table.insert({“article”:“aa bb rr gg”}) db.table.insert({“article”:“aa bb rr gg dfdfadfda”}) db.table.find({$text:{$search:“aa”}}) 全文索引相似度 $meta操作符:{score:{$meta:“textScore”}} 写在查询条件后面可以返回返回结果的相似度,与sort一起使用,可以达到很好的实用效果 db.table.find({$text:{$search:“aa bb”}},{score:{$meta:“textScore”}}) 对相似度进行排序 db.table.find({$text:{$search:“aa bb”}},{score:{$meta:“textScore”}}).sort({score:{$meta:“textScore”}}) [外链图片转存失败(img-5lA5NyTl-1564390465574)($text查询不能出现在$nor查询中 查询中如果包含了$text,hint不再起作用 MongoDB全文索引还不支持中文

地理位置索引

Java操作MongoDB

参考博客

[1] 官方驱动文档 [4]http://mongodb.github.io/mongo-java-driver/

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:面试官,不要再问我三次握手和四次挥手(求职者进入面试室,先主动和各位主考官握手,表示尊重)
下一篇:设计模式学习笔记
相关文章

 发表评论

暂时没有评论,来抢沙发吧~