MongoDB学习笔记
来源:互联网 发布:nginx lua 写入txt 编辑:程序博客网 时间:2024/06/16 06:11
下载和安装
http://blog.csdn.net/andie_guo/article/details/26068711
http://www.cnblogs.com/sweetchildomine/p/6397136.html
基本操作
显示所有数据库 show dbs 切换数据库,如果没有则会在需要的时候进行创建 use test 显示当前所在数据库db关闭数据库 db.dropDatabase() 插入一条数据db.test_collection.insert({x:1}) 插入数据,通知指定_id字段 db.test_collection.insert({x:2,_id:1}) 插入97条数据 for(i=3;i<100;i++)db.test_collection.insert({x:i}) 查看数据总数 db.test_collection.count() 查询时跳过前三条数据,限制返回数据为2条,同时对x字段进行排序 db.test_collection.find().skip(3).limit(2).sort({x:1}) 查看表 show collections show tables 用find进行查看,函数参数可以为空,返回所有数据 db.test_collection.find() 查找x为1的数据 db.test_collection.find({x:1}) 将x为1的数据变为x为999 db.test_collection.update({x:1},{x:999}) 有多个字段时进行修改 db.test_collection.insert({x:100,y:100,z:100}) 把这个数据整个变成y:999 db.test_collection.update({z:100},{y:999}) 只修改y字段的值为999 db.test_collection.update({z:100},{$set:{y:999}}) 在更新一条不存在的数据时自动创建 db.test_collection.update({y:50},{y:60},true) update只会更新第一条找到的数据,同时更新时可写成如下形式 将多条c为1的数据设置为c为2 db.test_collection.update({c:1},{$set:{c:2}},false,true) 数据的删除与查询类似接受一个参数,删除操作不允许不传参数 db.test_collection.remove({c:2}) 删除表 db.test_collection.drop() 查看集合的索引 db.table.getIndexes() 对x创建索引,x为1代表正向排序,x为-1代表逆向排序 db.table.ensureIndex({x:1})
常见的查询索引
_id索引
_id索引是绝大多数集合默认建立的索引
对于每个插入的数据,MongoDB都会自动生成一条唯一的_id字段
单建索引
单键索引是最普通的索引
与_id索引不同,单键索引不会自动创建
如记录为{x:1,y:2,z:3}在x字段上创建索引
多键索引
多键索引与单键索引创建形式相同,区别在于字段的值
单键索引:值为一个单一的值,例如字符串,数字或者日期
多键索引:值具有多个记录,例如数组
db.table.insert({x:[1,2,3,4,5]})
MongoDB为x创建了一个多键索引
复合索引
当我们查询的条件不只有一个时,就需要建立复合索引
1. 插入{x:1,y:2,z:3}记录
db.table.insert({x:1,y:1,z:1})
2. 想按照x与y的值查询
3. 创建索引
db.table.ensureIndex({x:1,y:1})
4. 使用{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”}})
全文索引使用限制
每次查询,只能指定一个$text查询
$text查询不能出现在$nor查询中
查询中如果包含了$text,hint不再起作用
MongoDB全文索引还不支持中文
地理位置索引
- mongodb 学习笔记一
- mongodb学习笔记
- MongoDB学习笔记
- MongoDB学习笔记
- MongoDB 学习笔记
- mongodb sharding 学习笔记
- MongoDB学习笔记
- mongoDB的学习笔记
- mongodb学习笔记
- [转]MongoDB学习笔记
- mongoDB学习笔记整理
- mongodb学习笔记一
- mongodb学习笔记
- mongodb学习笔记
- mongodb学习笔记
- MongoDB 学习笔记
- MongoDB 学习笔记
- MongoDB学习笔记《三》
- 阶乘之和
- I/O多路复用技术
- ios访问相机闪退解决办法
- ZOJ 3497-Mistwald(矩阵快速幂)
- mxnet多层感知机训练MNIST数据集详解【转】
- MongoDB学习笔记
- Yii2.0数据操作【使用createCommand()函数】
- 一个子类化重绘仿QQ2009
- HPU 1413 StarFarming (最短路)
- 前端图片、动画基本知识
- POJ 1144 Network(求无向图中的割点)
- 数据结构之链表(四)
- Parenthesis CSU
- CodeForces