3、文檔作為索引的鍵值(借鑒上面位址)
a.單列索引
MongoDB的官方文檔上面是這樣說的:
Documents as Keys
Indexed fields may be of any type, including documents:
往資料庫recommender的表data中插入三條記錄
>db.data.insert({name:"1616",info:{url:"http://www.1616.net/",city:"beijing"}});
>db.data.insert({name:"hao123",info:{url:"http://www.hao123.com/",city:"beijing"}});
>db.data.insert({name:"ll4la",info:{url:"http://www.114la.com/",city:"dongguan"}});
對字段info建立索引
> db.data.ensureIndex({info: 1});
顯示表data上的所有索引
> db.data.getIndexes();
[
{
"name" : "_id_",
"ns" : "recommender.data",
"key" : {
"_id" : 1
}
},
"_id" : ObjectId("4befb146b0e29ba1ce20e0bb"),
"x" : 1
"name" : "x_1"
"_id" : ObjectId("4befb76bb0e29ba1ce20e0bf"),
"info" : 1
"name" : "info_1"
]
查找指定的記錄,此時會用到索引
> db.data.find({info: {url:"http://www.1616.net/",city:"beijing"}});
{ "_id" : ObjectId("4befb711b0e29ba1ce20e0bc"), "name" : "1616", "info" : { "url" : "http://www.1616.net/", "city" : "beijing" } }
b.組合索引
建立組合索引
> db.data.ensureIndex({"info.url":1, "info.city":1});
"_id" : ObjectId("4befb9d1b0e29ba1ce20e0c0"),
"info.url" : 1,
"info.city" : 1
"name" : "info.url_1_info.city_1"
下面幾個操作均會用到索引
> db.data.find({"info.url": "http://www.1616.net/", "info.city": "beijing"});
> db.data.find({"info.url": "http://www.1616.net/"});
1表示升序(asc),-1表示降序(desc)
> db.data.find({"info.url": /http:*/i}).sort({"info.url": 1, "info.city": 1});
{ "_id" : ObjectId("4befb740b0e29ba1ce20e0be"), "name" : "ll4la", "info" : { "url" : "http://www.114la.com/", "city" : "dongguan" } }
{ "_id" : ObjectId("4befb723b0e29ba1ce20e0bd"), "name" : "hao123", "info" : { "url" : "http://www.hao123.com/", "city" : "beijing" } }
> db.data.find({"info.url": /http:*/i}).sort({"info.url": 1});
> db.data.find({"info.url": /http:*/i}).sort({"info.url": -1});
本文轉自jooben 51CTO部落格,原文連結:http://blog.51cto.com/jooben/365899