如何在MongoDB数据库中使用索引
MongoDB中各种索引的用途是什么?
1.单列索引
在字段x上创建索引,1(升序)或-1(降序)
db.data.ensureIndex( {x:1})
显示表数据中所有索引
> db.data.getIndexes()
[
{
“name”:“_id_”,
“ns”:“recommender.data”,
“key”:{
”_id” : 1
}
},
{
“_id” : ObjectId("4befb146b0e29ba1ce20e0bb"),< /p>
"ns" : "recommender.data",
"key" : {
"x" : 1
},< /p>
“name” : “x_1”
★}
★]
查找字段x的值为6,索引已被使用此时
> db.data.find({x:6})
{ "_id" : ObjectId( "4bee804ba23d558eb6687117"), "x" : 6, "name ” : “彩花枫1" }
【{ "_id" : ObjectId("4bee804ba23d558eb6687118"), "x" : 6, "name" : "caihuafeng2" }
{ "_id" : ObjectId(" 4bee804ba23d558eb6687119"), "x" : 6, "名称" : "彩花风3" } p>
{ "_id" : ObjectId("4bee804ba23d558eb668711a"), "x" : 6, "名称" : "彩花风4" }
【{ "_id" : ObjectId("4bee804ba23d558eb668711b"), "x" : 6, "姓名" : "菜花凤5" }
{ "_id" : ObjectId("4bee804ba23d558eb668711c "), "x" : 6, "姓名" : "菜花枫6" }
【{ "_id" : ObjectId("4bee804ba23d558eb668711e"), " x" : 6, "name" : "菜花峰8" }
{ "_id" : ObjectId("4bee804ba23d558eb668711f" ), "x" : 6,"姓名" : "菜花风9" }
二、默认索引</p>
上面1中db.data.getIndexes()显示的索引一共有2个,其中_id是建表时自动创建的索引创建了。这个我索引无法删除。
<索引总是在_id上创建。该索引比较特殊,不能删除。 _id 索引强制其键的唯一性。
【3. 文档作为索引的键值
p>
a. _id 索引强制其键的唯一性。单列索引
MongoDB的官方文档是这样说的:
文档作为键
索引字段可以是任何类型,包括文档:
向数据库推荐器的表数据中插入三条记录
> db.data.insert({name:"1616",info:{url:"http://www.1616.net/" ,city:"北京"}});
<> db.data.insert({name:"hao123",info:{url:"http://www.hao123.com/",city :"北京"}});
<> db.data.insert({name:"ll4la",info:{url:"http://www.114la.com/",city:" dongguan"}});
创建字段infoReference的搜索
db.data.ensureIndex({info: 1});
显示全部表数据索引
<> db.data.getIndexes( );
<[
<{
<"name" : "_id_" ,
“ns”:“recommender.data”,
“key”:{
『_id』:1
『}
『},
『{
『_id』:ObjectId("4befb146b0e29ba1ce20e0bb") ,
“ns”:“推荐器.data”,
“key”:{
“x”:1
<} ,
"名称" : "x_1"
★},
{ p>
★"_id" : ObjectId("4befb76bb0e29ba1ce20e0bf"),
“ns”:“recommender.data”,
“key”:{
“info”:1
<},
【"name" : "info_1"
}
]
查找指定记录,此时会用到索引
<> db.data.find({info: {url:"http://www.1616.net/",城市:"北京"}});
<< "_id" : ObjectId("4befb711b0e29ba1ce20e0bc"), "姓名" : "1616", "信息" : { "url" : "http://www.1616.net/", "城市" : "北京" } }
b.组合索引
创建组合索引
:db.data.ensureIndex({"info.url":1, "info.city":1});
< p><> db.data.getIndexes();<[
<{
<"name" : "_id_",
" ns" : "recommender.data",
"key" : {
"_id" : 1
}
},
{
"_id" : ObjectId("4befb146b0e29ba1ce20e0bb"),
:“ns”:“推荐器.data”,
:“key”:{
:“x”:1
< p> },<"名称": "x_1"
<},
<{
<"_id": ObjectId("4befb76bb0e29ba1ce20e0bf "),
“ns”:“推荐器.data”,
“key”:{
“info”:1
},
『名称』:『info_1』
『}』,
』{
『_id』:ObjectId("4befb9d1b0e29ba1ce20e0c0" ),
“ns”:“推荐器.data”,
“key”:{
“info.url”:1,
<"info.city" : 1
<},
以下操作会用到索引
> db.data.find({"info.url": "http://www.1616.net/", "info.city ": "北京"});
{ "_id" : ObjectId("4befb711b0e29ba1ce20e0bc"), "name" : "1616", "info" : { "url" : "http ://www.1616.net/", "城市" : "北京" } }
db.data.find({"info.url": "http://www.1616. net/"} );
{ "_id" : ObjectId("4befb711b0e29ba1ce20e0bc"), "名称" : "1616", "信息" : { "url" : "http://www.1616 .net/", "城市" : "是ijing" } }
1表示升序(asc),-1表示降序(desc)
db.data.find({"info.url": /http :*/i})。排序({“ info.url”:1,“ info.city”:1});
{“ _id”:objectID(“ 4BEFB740B0E29BA1CE20E0BE”),” : "ll4la", "info" : { "url" : "http://www.114la.com/", "城市" : "东莞" } }
{ "_id" : ObjectId( "4befb711b0e29ba1ce20e0bc"), "名称" : "1616", "信息" : { "url" : "http://www.1616.net/ ", "城市" : "北京" } }
{ "_id" : ObjectId("4befb723b0e29ba1ce20e0bd"), "名称" : "hao123", "info" : { "url" : "http://www.hao123.com/", "城市" : "北京" } }
< > db.data.find({"info.url": /http:*/i}).sort({"info.url": 1});
< p><{ "_id" : ObjectId("4befb740b0e29ba1ce20e0be"), "名称" : "ll4la", "信息" : { "url" : "http://www. 114la.com/“,“ city”:“ dongguan”}}{“ _id”:objectid(“ 4BEFB711B0E29BA1CE20E0BC”),“名称”:“ 1616” : "http://www.1616.net/", "城市" : "北京" } }
{ "_id" : ObjectId("4befb723b0e29ba1ce20e0bd"), "name" : "hao123", "info" : { "url" : "http://www.hao123.com/", "city" : "北京" } }
<> db. data.find({"info.url ": /http:*/i}).sort({"info.url": -1});
{ "_id" : ObjectId("4befb723b0e29ba1ce20e0bd "), "姓名" : "hao123 ", "信息" : { "url" : "http://www.hao123.com/", "城市" : "北京" } }
{ "_id" : ObjectId("4befb711b0e29ba1ce20e0bc"), "姓名" : "1616", "信息" : { "url" : "http://www .1616.net/", "城市" : "北京" } }
{ "_id" : ObjectId("4befb740b0e29ba1ce20e0be"), "名称" : "ll4la", "信息" : { "url " : "http://www.114la.com/", " city" : "dongguan" } }
【MongoDB中各种索引的用途是什么
【4.组合索引
注意,这里的组合索引是一个与上面 3 中 b 中的组合索引没什么不同。 4中是对一级字段建立组合索引,而上述3中是对二级字段建立组合索引。索引。
在字段 name 和 info 上创建组合索引
> db.data.ensureIndex({name: 1, info: -1});
创建组合索引时,字段后面的1表示升序,-1表示降序。使用1还是-1主要和排序的时候或者指定范围内查询的时候有关。详细内容请参见下面的英文原文。
当创建索引时,与键关联的数字指定了索引的方向,因此它应该始终为 1(升序)或 -1(降序)。方向对于单键索引或随机访问检索并不重要,但如果您对复合索引进行排序或范围查询,方向就很重要。
【显示所有索引
】db.data。 getIndexes();
【
<{
<"name" : "_id_",
<"ns" : "recommender.data ",
<"key": {
<"_id": 1
<}
<},
{
“_id”:ObjectId(“4befb146b0e29ba1ce20e0bb”),
“ns”:“recommender.data”,
“key”:{ p>
"x" : 1
},
"名称" : "x_1"
},
{
“_id”:ObjectId(“4befb76bb0e29ba1ce20e0bf”),
“ns”:“recommender.data”,
“key”:{
< p>“信息”:1< /p><},
<名称>:“info_1”
<},
<{
“_id”:ObjectId(“4befb9d1b0e29ba1ce20e0c0”),
“ns”:“recommender.data”,
“key”:{
"info.url" : 1,
"info.city" : 1
★},
★"name" : "info.url_1_info.city_1"
},
〈{
〈"_id" : ObjectId ("4befbfcfb0e29ba1ce20e0c1"),
〈ns" : "recommender.data ",
『键』:{
『名称』:1,
『信息』:-1
』},< /p>
“name” : “name_1_info_-1”
<}
]
下面的排序将使用上面的索引
最后一行的“名字”:“ll4la”其实是“名字”:“114la”(也就是数字一写成了字母l),但是我输入的时候却写成了“名称”:“ll4la”。我犯了一个错误,但排序结果是正确的。
> db.data.find({"info.url": /http:*/i}).sort({name:1, info: -1});
{ "_id" : 对象tId("4befb711b0e29ba1ce20e0bc"), "名称" : "1616", "信息" : { "url" : "http://www.1616.net/", "城市" : "北京" } }
<{ "_id" : ObjectId("4befb723b0e29ba1ce20e0bd"), "姓名" : "hao123", "信息" : { "url" : "http://www.hao123.com/", "城市" : "北京" } }
{ "_id" : ObjectId("4befb740b0e29ba1ce20e0be"), "name" : "ll4la", "info" : { "url" : "http://www.114la.com /", "city" : "dongguan" } }
MongoDB复合索引规则
如果有多个字段的复合索引,可以用它来查询起始子集字段。因此,如果您在< /p>
<上有索引,则可以使用它查询
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何在MongoDB数据库中使用索引