-
查询方式,全文索引不再需要指定字段名,直接用$text,$search即可,且mongodb中,每个集合只允许创建一个全文索引。 >db.articles.find({$text:{$search:”coffee”}}) >db.articles.find({$text:{$search:”aa bb cc”}}) #空格代表或操作,aa或bb或cc,满足一个即可 >db.articles.find({$text:{$search:”aa bb -cc”}}) #-号为非操作,即不包含cc的 >db.articles.find({$text:{$search:”\”aa\”bb cc”}}) #加双引号可以提供且关系操作 $search中即为要查找的字符串 案例 1).在article字段上建立全文索引 >db.imooc_2.ensureIndex({"article":"text"}) 2).新建模拟数据 >db.imooc_2.insert({"article":"aa bb cc dd ee"}) >db.imooc_2.insert({"article":"aa bb yy uu ll ii oo"}) >db.imooc_2.insert({"article":"aa bb cc dd jsdkfjskdf"}) >db.imooc_2.insert({"article":"aa bb cc dd 7878sdfj"}) 3).全文索引查询 >db.imooc_2.find({$text:{$search:"aa"}}) #查找包含aa的 >db.imooc_2.find({$text:{$search:"aa bb cc"}}) #查找包含aa或包含bb或包含cc的,空格代表或关系 >db.imooc_2.find({$text:{$search:"aa bb -cc"}}) #包含aa bb 但不包含cc的 >db.imooc_2.find({$text:{$search:"\"aa\" \"bb\" \"cc\""}}) #用双引号引住搜索字段,可表示且关系,查询包含aa且包含bb且包含cc的查看全部
-
创建方式 >db.articles.ensureIndex({key:"text"}) #key-字段名,value-固定字符串text 上述指令表示,在articles这个集合的key字段上创建了一个全文索引 >db.articles.ensureIndex({key1:"text",key2:"text"}) #在多个字段上创建全文索引 对于nosql数据库,每个记录存储的key可能都是不同的,如果要在所有的key上建立全文索引,一个一个写很麻烦,mongodb可以通过下面指令完成: >db.articles.ensureIndex({"$**":"text"}) #给所有字段建立全文索引查看全部
-
【全文索引】 不适用全文索引:查找困难,效率低下,需要正则匹配,逐条扫描。 使用全文索引:简单查询即可查询需要的结果查看全部
-
>db.imooc_2.ensureIndex({time:1},{expireAfterSeconds:30}) #time索引30秒后失效 >db.imooc_2.insert({time:new Date()}) #new Date()自动获取当前时间,ISODate >db.imooc_2.find() #可看到刚才insert的值 过30秒后再find,刚才的数据就已经不存在了。 过期索引的限制: 1.存储在过期索引字段的值必须是指定的时间类型,必须是ISODate或者ISODate数组,不能使用时间戳,否则不能自动删除。 例如 >db.imooc_2.insert({time:1}),这种是不能被自动删除的 2.如果指定了ISODate数组,则按照最小的时间进行删除。 3.过期索引不能是复合索引。因为不能指定两个过期时间。 4.删除时间是不精确的。删除过程是由MongoDB的后台进程每60s跑一次的,而且删除也需要一定时间,所以存在误差。查看全部
-
部分特性对比查看全部
-
数据库分类查看全部
-
在一段时间后会过期的索引 在索引过期后,相应的数据会被删除 适合存储在一段时间之后会失效的数据,比如用户的登录信息、存储的日志等。 >db.imooc_2.ensureIndex({time:1},{expireAfterSeconds:10}) #创建过期索引,time-字段,expireAfterSeconds在多少秒后过期,单位:秒查看全部
-
当查询条件不只有一个时,需要建立复合索引 例如{x:1,y:2,z:3}这样一条数据,要按照x与y的值进行查询,就需要创建复合索引。 >db.imooc_2.ensureIndex({x:1,y:1}) #1升序,-1降序 >db.imooc_2.find({x:1,y:2}) #使用复合索引查询查看全部
-
多键索引与单键索引创建形式相同,区别在于字段的值。 多键索引的值具有多个记录,例如数组。 >db.imooc_2.insert({x:[1,2,3,4,5]}) #创建了多键索引查看全部
-
单键索引: 1.单键索引是最普通的索引 2.与_id索引不同,单键索引不会自动创建 如:一条记录,形式为:{x:1,y:2,z:3} db.imooc_2.getIndexes()//查看索引 db.imooc_2.ensureIndex({x:1})//创建索引,索引可以重复创建,若创建已经存在的索引,则会直接返回成功。 db.imooc_2.find()//查看数据查看全部
-
相关网站查看全部
-
_id索引:绝大多数集合默认建立的索引,对于每个插入的数据,MongoDB都会生成一条唯一的_id字段。 例如新创建一个集合时 >db.imooc_2.insert({x:1}) >db.imooc_2.getIndexes() #查看集合索引,可看到_id索引查看全部
-
scons all mongod -f file mongo ip:port show dbs use db show collections db.collection.insert(); db.collection.update() db.collection.delete() db.collection.count(); db.collection.find() db.collection.getIndexes() db.collection.ensuerIndex()查看全部
-
数据量很大时,查询使用索引可大幅度提高效率 1.db.imooc_collection.getIndexes() #查看集合的索引情况,初始情况下有_id一个索引 2.db.imooc_collection.ensureIndex({x:1}) #创建x字段索引,+1为升序,-1为降序,这里的1不再代表值 3.如果数据量非常大,创建索引需要消耗一定的时间,这时需要在使用数据库之前就将索引创建完毕,否则会对数据库性能造成较大影响查看全部
-
数据删除 remove 必须传参数,不传会报错,他默认删除所有查找到的数据 >db.imooc_collection.remove({c:2}) 对于某张表使用删除操作可以使用 >db.imooc_collection.drop() #db.表名.drop() 再>show tables 已经看不到数据查看全部
举报
0/150
提交
取消