-
db.createCollection('imooc_collection')
先創(chuàng)建集合
查看全部 -
MongoDB的概念
無數(shù)據(jù)結(jié)構(gòu)限制(
1.沒有表結(jié)構(gòu)的概念,每條記錄可以有完全不同的解構(gòu)?
2.便于開發(fā)
3.sql數(shù)據(jù)庫(kù)需要事先定義表結(jié)構(gòu)再使用
)
完全的索引支持(
1.Redis的key-value鍵值索引
2.HBASE的單索引,二級(jí)索引需要自己實(shí)現(xiàn)
)
單鍵索引,多建索引,數(shù)組索引,全文索引都可以很好的實(shí)現(xiàn)
方便的冗余與擴(kuò)展(
1.復(fù)制集保證數(shù)據(jù)安全(一層層的主從解構(gòu),良好的數(shù)據(jù)安全性,每一份數(shù)據(jù)都分為三分,以免發(fā)生數(shù)據(jù)丟失)
2.分片擴(kuò)展數(shù)據(jù)規(guī)模(方便的規(guī)模擴(kuò)展)
)
良好的支持(
1.完善的文檔
2.齊全的驅(qū)動(dòng)支持
)
查看全部 -
(1)_id索引
查看全部 -
學(xué)習(xí)mongodb的重要網(wǎng)站
查看全部 -
一、索引屬性
1、創(chuàng)建索引時(shí)的格式:db.collection.ensureIndex({param},{param}),第2個(gè)參數(shù)便是對(duì)應(yīng)的屬性。
2、比較重要的屬性:
(1)名字,name指定:
db.collection.ensureIndex({},{name;” “})
(2)唯一性,unique指定,利用unique可以實(shí)現(xiàn)若存在,則不插入,若不存在則插入。
db.collection.ensureIndex({},{unique:true/false})
(aSuncat:ensureIndex - 創(chuàng)建一個(gè)索引, insert - 插入一條數(shù)據(jù))
(3)稀疏性,sparse指定,不必為不存在的字段創(chuàng)建索引
db.collection.ensureIndex({},{sparse:true/false})
①db.imooc_2.find({m:{$exists:true}})
②db.imooc_2.ensureIndex({m:1},{sparse:true})
③db.imooc_2.find(m:{$exists:false})
如果mongoDB在選取索引時(shí),如果發(fā)現(xiàn)在稀疏索引上查找不存在文檔,將不會(huì)使用稀疏索引,如果強(qiáng)制指定的話,就會(huì)發(fā)現(xiàn)問題。
④db.imooc_2.getIndexs()
⑤db.imooc_2.find({m:{$exists:false}}).hint(“m_1”)
不能在稀疏索引上查找字段不存在的記錄。
(4)是否定時(shí)刪除,expireAfterSeconds指定:TTL,過期索引。
查看全部 -
一、索引類型
1、_id索引
(1)_id索引是絕大多數(shù)集合默認(rèn)建立的索引。
(2)對(duì)于每個(gè)插入的數(shù)據(jù),mongoDB都會(huì)自動(dòng)生成一條唯一的_id字段。
2、單鍵索引
(1)單鍵索引是最普通的索引。
(2)與_id索引不同,單鍵索引不會(huì)自動(dòng)創(chuàng)建。
3、多鍵索引
(1)多鍵索引與單鍵索引創(chuàng)建形式相同,區(qū)別在于字段的值。
①單鍵索引:值為一個(gè)單一的值,如字符串,數(shù)字或日期。
②多鍵索引:值具有多個(gè)記錄,如數(shù)組。
(2)use imooc:使用imooc數(shù)據(jù)庫(kù)
db.imooc_2.getIndexs():使用imooc_2數(shù)據(jù)集合
(3)db.imooc_2.insert({x:[1,2,3,4]}),創(chuàng)建了一個(gè)多鍵索引
4、符合索引
(1)當(dāng)我們的查詢條件不只有一個(gè)時(shí),就需要建立符合索引
(2)db.imooc_2.ensureIndex({x:1,y:2}),創(chuàng)建索引
db.imooc_2.find({x:1,y:2}),使用索引
5、過期索引
(1)過期索引:是在一段時(shí)間后會(huì)過期的索引
(2)在索引過期后,相應(yīng)的數(shù)據(jù)會(huì)被刪除。
(3)適合存儲(chǔ)一些在一段時(shí)間后會(huì)失效的數(shù)據(jù),如用戶的登陸信息,存儲(chǔ)的日志。
(4)建立方法:db.collection.ensureIndex({time:1},{expireAfterSeconds:10}), expireAfterSeconds為過期時(shí)間
(5)過期索引的限制:
①存儲(chǔ)在過期索引字段的值必須是指定的時(shí)間類型。說明:必須是ISODate或者ISODate數(shù)組,不能使用時(shí)間戳,否則不能被自動(dòng)刪除。
②如果指定了ISODate數(shù)組,則按照最小的時(shí)間進(jìn)行刪除。
③過期索引不能是復(fù)合索引。
④刪除時(shí)間不是精確。說明:刪除過程是由后臺(tái)程序每60s跑一次,而且刪除也需要一些時(shí)間,所以存在誤差。
6、全文索引
(1)全文索引:對(duì)字符串與字符串?dāng)?shù)組創(chuàng)建全文可搜索的索引
(2)適用情況:{author:””,title:””,article:””}
(3)建立方法:
①db.articles.ensureIndex({key:”text”})
②db.articles.ensureIndex({key_1:”text”,key_2:”text”})
③db.articles.ensureIndex({“$**”:”text”}),對(duì)集合中所有字段創(chuàng)建一個(gè)大的索引。
(4)使用全文索引查詢
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\””}}),查找既包含aa,又包含bb,又包含cc
(5)mongoDB中每個(gè)集合只允許創(chuàng)建一個(gè)全文索引
(6)全文索引相似度
①$meta操作符:{score:{$meta:”textScore”}}
②寫在查詢條件后面可以返回返回結(jié)果的相似度。
③與sort一起使用,可以達(dá)到很好的實(shí)用效果。
④db.imooc_2.find({$text:{$search:”aa bb”}},{score:{$meta:”textsScore”}}).sort({score:{$meta:”textScore”}}),根據(jù)score排序。
(7)全文索引使用限制:
①每次查詢,只能指定一個(gè)$text查詢。
②$text查詢不能出現(xiàn)在$nor查詢中。
③查詢中如果包含了$text,hint不再起作用。
④mongoDB全文索引還不支持中文。(aSuncat:2016年的v3.2.6是已經(jīng)支持中文了的)
7、地理位置索引
查看全部 -
一、很多情況下,系統(tǒng)性能下降,都是與mongoDB的索引相關(guān)的。
查看全部 -
索引種類的
查看全部 -
更新不存在數(shù)據(jù)update({y:100},{y:999},true)
查看全部 -
部分更新$set
查看全部 -
mongo更新多條數(shù)據(jù)
查看全部 -
一、查詢
1、數(shù)據(jù)量較小時(shí),不使用索引查詢是較快的,但是如果數(shù)據(jù)量較大,查詢就會(huì)非常緩慢。
2、db.imooc_collection.getIndexes()
3、db.imooc_collection.ensureIndex({x:1}), (1)ensureIndex創(chuàng)建索引,參數(shù)是json文檔,
(2)key的值不再代表值,而是代表方向。
x:1代表正向排序,x:-1代表逆向排序。
(3)創(chuàng)建索引要消耗很長(zhǎng)的時(shí)間,如果系統(tǒng)負(fù)載較重,且有很多已經(jīng)存在的文檔,則不能直接使用ensureIndex這個(gè)命令,需要在數(shù)據(jù)庫(kù)創(chuàng)建之前就創(chuàng)建索引。
(4)創(chuàng)建索引會(huì)對(duì)寫入有一定的影響。
查看全部 -
一、刪除
1、為防止誤操作,刪除操作不允許不傳參數(shù)。
2、db.imooc_collection.remove({c:2});
查看全部 -
一、更新多條數(shù)據(jù)
1、db.imooc_collection.insert({c:1})
2、db.imooc_collection.insert({c:1})
3、db.imooc_collection.insert({c:1}) ? 這樣c:1的數(shù)據(jù)就有3條
4、db.imooc_collection.update({c:1},{c:2}), 這樣只能把一條c:1的數(shù)據(jù)更新成c:2,因?yàn)閙ongoDB為了防止誤操作,所以只更新了一條數(shù)據(jù)。
5、db.imooc_collection.update({c:1},{$set:{c:2}},false,true),這樣能把3條c:1的數(shù)據(jù)全都更新成c:2
(1)第3個(gè)參數(shù)false:表示如果數(shù)據(jù)不存在,則不需要重新創(chuàng)建。
(2)第4個(gè)參數(shù)true:表示批量更新,如果是false,則表示只更新一條。
查看全部 -
一、更新不存在的數(shù)據(jù)
1、db.imooc_collection.update({y:100},{y:999},true)
true表示,如果查找的數(shù)據(jù)不存在,就自動(dòng)插入一條。
查看全部
舉報(bào)