MongoDBѧϰ±Ê¼Ç(Áù) MongoDBË÷ÒýÓ÷¨ºÍЧÂÊ·ÖÎö
¡¡¡¡MongoDBÖеÄË÷ÒýÆäʵÀàËÆÓÚ¹ØÏµÐÍÊý¾Ý¿â£¬¶¼ÊÇΪÁËÌá¸ß²éѯºÍÅÅÐòµÄЧÂʵ쬲¢ÇÒʵÏÖÔÀíÒ²»ù±¾Ò»Ö¡£ÓÉÓÚ¼¯ºÏÖеļü(×Ö¶Î)¿ÉÒÔÊÇÆÕͨ Êý¾ÝÀàÐÍ£¬Ò²¿ÉÒÔÊÇ×ÓÎĵµ¡£MongoDB¿ÉÒÔÔÚ¸÷ÖÖÀàÐ͵ļüÉÏ´´½¨Ë÷Òý¡£ÏÂÃæ·Ö±ð½²½â¸÷ÖÖÀàÐ͵ÄË÷ÒýµÄ´´½¨£¬²éѯ£¬ÒÔ¼°Ë÷ÒýµÄά»¤µÈ¡£
Ò»¡¢´´½¨Ë÷Òý
¡¡¡¡ 1. ĬÈÏË÷Òý
¡¡¡¡MongoDBÓиöĬÈϵġ°_id¡±µÄ¼ü£¬ËûÏ൱ÓÚ¡°Ö÷¼ü¡±µÄ½ÇÉ«¡£¼¯ºÏ´´½¨ºóϵͳ»á×Ô¶¯´´½¨Ò»¸öË÷ÒýÔÚ¡°_id¡±¼üÉÏ£¬ËüÊÇĬÈÏË÷Òý£¬Ë÷ÒýÃû½Ð¡°_id_¡±£¬ÊÇÎÞ·¨±»É¾³ýµÄ¡£ÎÒÃÇ¿ÉÒÔͨ¹ýÒÔÏ·½Ê½²é¿´£º
var _idIndex = mongoCollection.Metadata.Indexes.Single(x => x.Key == "_id_"); Console.WriteLine(_idIndex);2. µ¥ÁÐË÷Òý
¡¡¡¡ÔÚµ¥¸ö¼üÉÏ´´½¨µÄË÷Òý¾ÍÊǵ¥ÁÐË÷Òý£¬ÀýÈçÎÒÃÇÒªÔÚ¡°UserInfo¡±¼¯ºÏÉϸø¡°UserName¡±¼ü´´½¨Ò»¸öµ¥ÁÐË÷Òý£¬Óï·¨ÈçÏ£º£¨1±íʾÕýÐò£¬-1ÄæÐò£©
mongoCollection.Metadata.CreateIndex(new Document { { "UserName", 1 } }, false);½Ó×Å£¬ÎÒÃÇÓÃͬÑù·½·¨²éÕÒÃûΪ¡°_UserName_¡±µÄË÷Òý
var _UserName_Index = mongoCollection.Metadata.Indexes.Single(x => x.Key == "_UserName_"); Console.WriteLine(_UserName_Index);3.×éºÏË÷Òý
¡¡¡¡ÁíÍ⣬ÎÒÃÇ»¹¿ÉÒÔͬʱ¶Ô¶à¸ö¼ü´´½¨×éºÏË÷Òý¡£ÈçÏ´úÂë´´½¨Á˰´ÕÕ¡°UserId¡±ÕýÐò£¬¡°UserName¡±ÄæÐòµÄ×éºÏË÷Òý:
mongoCollection.Metadata.CreateIndex(new Document { { "UserId", 1 }, { "UserName", -1 } }, false);4.×ÓÎĵµË÷Òý
¡¡¡¡ÎÒÃÇ¿ÉÒÔ¶ÔÎĵµÀàÐ͵ļü´´½¨¸÷ÖÖË÷Òý£¬ÀýÈçµ¥ÁÐË÷Òý£¬ÈçÏ´´½¨Óû§ÏêϸÐÅÏ¢¡°Detail¡±µÄµ¥ÁÐË÷Òý£º
mongoCollection.Metadata.CreateIndex(new Document { { "Detail", 1 } }, false);¶Ô×ÓÎĵµµÄ¼ü´´½¨×éºÏË÷Òý£ºÀýÈçÔÚ¡°Detail.Address¡±ºÍ¡°Detail.Age¡±ÉÏ´´½¨×éºÏË÷Òý£º
mongoCollection.Metadata.CreateIndex(new Document { { "Detail.Address", 1 }, { "Detail.Age", -1 } }, false);5.ΨһË÷Òý
¡¡¡¡Î¨Ò»Ë÷ÒýÏÞÖÆÁ˶Ե±Ç°¼üÌí¼Óֵʱ£¬²»ÄÜÌí¼ÓÖØ¸´µÄÐÅÏ¢¡£ÖµµÃ×¢ÒâµÄÊÇ£¬µ±Îĵµ²»´æÔÚÖ¸¶¨¼üʱ£¬»á±»ÈÏΪ¼üÖµÊÇ¡°null¡±£¬ËùÒÔ¡°null¡±Ò²»á±»ÈÏΪÊÇÖØ¸´µÄ£¬ËùÒÔÒ»°ã±»×÷ΪΨһË÷ÒýµÄ¼ü£¬×îºÃ¶¼ÒªÓмüÖµ¶Ô¡£
¡¡¡¡¶Ô¡°UserId¡±´´½¨Î¨Ò»Ë÷Òý(Õâʱºò×îºóÒ»¸ö²ÎÊýΪ¡°true¡±)£º
mongoCollection.Metadata.CreateIndex(new Document { { "UserId", 1 } }, true);¶þ¡¢Î¬»¤Ë÷Òý
¡¡¡¡ 1. ²éѯË÷Òý
¡¡¡¡Í¨¹ýË÷ÒýÃû²éѯµÄ·½Ê½ÒÑÓнéÉÜ¡£µ«ÓÐʱºò£¬ÎÒÃÇ¿ÉÄÜÍü¼ÇÁËË÷ÒýÃû£¬Ôõô²éÑ¯ÄØ£¿
¡¡¡¡ÏÂÃæÌṩһ¸ö±éÀúÈ«²¿Ë÷ÒýµÄ·½·¨£¬´òÓ¡È«²¿Ë÷ÒýÐÅÏ¢£º
foreach (var index in mongoCollection.Metadata.Indexes) { Console.WriteLine(index.Value); } Êä³ö½á¹ûʾÀý£º { "name": "_id_", "ns": "myDatabase.UserInfo", "key": { "_id": 1 } } { "name": "_UserId_unique_", "ns": "myDatabase.UserInfo", "key": { "UserId": 1 }, "unique": true, "_id": "4d8f406ab8a4730b78000005" } { "name": "_UserName_", "ns": "myDatabase.UserInfo", "key": { "UserName": 1 }, "unique": false, "_id": "4d8f406ab8a4730b78000006" } { "name": "_Detail.Address_Detail.Age_", "ns": "myDatabase.UserInfo", "key": { "Detail.Address": 1, "Detail.Age": -1 }, "unique": false, "_id": "4d8f406ab8a4730b78000007" } { "name": "_UserId_UserName_", "ns": "myDatabase.UserInfo", "key": { "UserId": 1, "UserName": -1 }, "unique": false, "_id": "4d8f406ab8a4730b78000008" } { "name": "_Detail_", "ns": "myDatabase.UserInfo", "key": { "Detail": 1 }, "unique": false, "_id": "4d8f406ab8a4730b78000009" }¿É¼û£¬¼¯ºÏµÄË÷ÒýÒ²ÊÇͨ¹ýÒ»¸ö¼¯ºÏÀ´Î¬»¤µÄ¡£name±íʾË÷ÒýÃû£¬ns±íʾË÷ÒýÊôÓÚÄĸö¿âÄĸö¼¯ºÏ£¬key±íʾË÷ÒýÔÚÄĸö¼üÉÏ£¬ÕýÐò»¹ÊÇÄæÐò£¬unique±íʾÊÇ·ñΪΨһË÷Òý£¬µÈµÈ...
¡¡¡¡ 2. ɾ³ýË÷Òý
¡¡¡¡ÐÂÊÖ³£ÏÝÈëµÄÎóÇøÊÇ£¬ÈÏΪ¼¯ºÏ±»É¾³ý£¬Ë÷Òý¾Í²»´æÔÚÁË¡£¹ØÏµÐÍÊý¾Ý¿âÖУ¬±í±»É¾³ýÁË£¬Ë÷ÒýÒ²²»»á´æÔÚ¡£ÔÚMongoDBÖв»´æÔÚɾ³ý¼¯ºÏµÄ˵·¨£¬¾ÍË㼯ºÏÊý¾ÝÇå¿Õ£¬Ë÷Òý¶¼ÊÇ»¹Ôڵģ¬ÒªÒƳýË÷Òý»¹ÐèÒªÊÖ¹¤É¾³ý¡£
¡¡¡¡ÀýÈ磬ɾ³ýÃûΪ¡°_UserName_¡±µÄË÷Òý£º
mongoCollection.Metadata.DropIndex("_UserName_"); ÏÂÃæÌṩɾ³ý³ýĬÈÏË÷ÒýÍâÆäËûÈ«²¿Ë÷ÒýµÄ·½·¨: public void DropAllIndex() { var listIndexes = mongoCollection.Metadata.Indexes.ToList(); for (int i = 0; i < listIndexes.Count; i++) { if (listIndexes[i].Key != "_id_") { mongoCollection.Metadata.DropIndex(listIndexes[i].Key); } } }Èý¡¢Ë÷ÒýµÄЧÂÊ
¡¡¡¡MongoDBµÄË÷Òýµ½µ×Äܲ»ÄÜÌá¸ß²éѯЧÂÊÄØ£¿ÎÒÃÇÔÚÕâÀïͨ¹ýÒ»¸öÀý×ÓÀ´²âÊÔ¡£±È½ÏͬÑùµÄÊý¾ÝÔÚÎÞË÷ÒýºÍÓÐË÷ÒýµÄÇé¿öϵIJéѯËÙ¶È¡£
¡¡¡¡Ê×ÏÈ£¬ÎÒÃÇͨ¹ýÕâÑùÒ»¸ö·½·¨²åÈë10WÌõÊý¾Ý:
public void InsertBigData() { var random = new Random(); for (int i = 1; i < 100000; i++) { Document doc = new Document(); doc["ID"] = i; doc["Data"] = "data" + random.Next(100000); mongoCollection.Save(doc); } Console.WriteLine("µ±Ç°ÓÐ" + mongoCollection.FindAll().Documents.Count() + "ÌõÊý¾Ý"); } È»ºó£¬ÊµÏÖÒ»¸ö·½·¨ÓÃÀ´´´½¨Ë÷Òý: public void CreateIndexForData() { mongoCollection.Metadata.CreateIndex(new Document { { "Data", 1 } }, false); } »¹ÓÐÅÅÐòµÄ·½·¨£º public void SortForData() { mongoCollection.FindAll().Sort(new Document { { "Data", 1 } }); } ÔËÐвâÊÔ´úÂëÈçÏÂ: static void Main(string[] args) { IndexBLL indexBll = new IndexBLL(); indexBll.DropAllIndex(); indexBll.DeleteAll(); indexBll.InsertBigData(); Stopwatch watch1 = new Stopwatch(); watch1.Start(); for (int i = 0; i < 1; i++) indexBll.SortForData(); Console.WriteLine("ÎÞË÷ÒýÅÅÐòÖ´ÐÐʱ¼ä£º" + watch1.Elapsed); indexBll.CreateIndexForData(); Stopwatch watch2 = new Stopwatch(); watch2.Start(); for (int i = 0; i < 1; i++) indexBll.SortForData(); Console.WriteLine("ÓÐË÷ÒýÅÅÐòÖ´ÐÐʱ¼ä£º" + watch2.Elapsed); }×îºóÖ´ÐгÌÐò²é¿´½á¹û£º
¡¡¡¡
¡¡¡¡¶à´Î²âÊÔ±íÃ÷ÔÚÓÐË÷ÒýµÄÇé¿öÏ£¬²éѯЧÂÊÒª¸ßÓÚÎÞË÷ÒýµÄЧÂÊ¡£
ÔÎĵØÖ·£ºhttp://www.cnblogs.com/lipan/archive/2011/03/28/1997202.html
ÍÆ¼öÐÅÏ¢
- ¡¾ÊÓÆµ²¥·Å¡¿JplayerÊÓÆµ²¥·ÅÆ÷µÄʹÓÃ
- memcacheÄÚ´æÔÀí
- Memcache¼¼Êõ·ÖÏí£º½éÉÜ¡¢Ê¹Óᢴ洢¡¢Ëã·¨¡¢ÓÅ»¯....
- php³£ÓÃÕýÔò±í´ïʽ
- phpÐÔÄܼà²âÄ£¿éXHProf
- ÈÃCI¿ò¼ÜÖ§³Öservice²ã
- ʹÓÃPHPÉú³É´øLOGOµÄ¸öÐÔ»¯¶þάÂëͼÏñ
- ¹ØÓÚCodeIgniterÄã¿ÉÄܲ»ÖªµÀµÄ5¸ö֪ʶµã
- Memcache ºÁÃë¼¶³¬Ê±¼°ÆäËû³£¼ûÎÊÌâ»ã×Ü
- [PHP±Ê¼Ç]PHPQueryÒ»¸ö´¦ÀíDOMµÄÀûÆ÷
ÈÈÃÅÐÅÏ¢
- nohup: redirecting stderr to stdou....
- ʹÓÃlog_formatΪNginx·þÎñÆ÷ÉèÖøüÏêϸµÄÈÕÖ¾¸ñʽ
- jquery easyUI--dataGrid-Json
- [Ô´´]·ÂGoogle Reader¡¢ÐÂÀË΢²©¡¢ÌÚѶ΢²©µ....
- ÀûÓÃKeepalived+mysql¹¹½¨¸ß¿ÉÓÃMySQLË«Ö÷×Ô¶....
- Nginx+keepalivedʵÏÖ¸ºÔؾùºâºÍË«»úÈȱ¸¸ß¿ÉÓÃ
- jqueryʵÏÖÒ³Ãæ¼ÓÔØ½ø¶ÈÌõ
- Rolling cURL: PHP²¢·¢×î¼Ñʵ¼ù
- codeigniter ·ÓÉÖÕ¼«ÓÅ»¯(url rewrite)
- linuxÏÂÉèÖÃsshÎÞÃÜÂëµÇ¼
×î½ü¸üÐÂ
- PHP»ñÈ¡Óû§µÄÕæÊµIP£¬²¢ÅжÏÊÇ·ñÄÚÍøIP
- PHP ´íÎóÈÕÖ¾ error_log
- ÀûÓÃbigpipe»úÖÆÊµÏÖÒ³ÃæÄ£¿éµÄÒì²½äÖȾ chunked¼¼Êõ
- php¿ØÖÆÎļþÏÂÔØËÙ¶È
- js + php ¶ÁÈ¡¡¢²¥·ÅÊÓÆµÁ÷ ¼æÈÝfirefox£¬c....
- ¡¾ÊÓÆµ²¥·Å¡¿JplayerÊÓÆµ²¥·ÅÆ÷µÄʹÓÃ
- UNICODE Óë UTF-8 µÄ¹ØÏµ
- memcacheÄÚ´æÔÀí
- Memcache¼¼Êõ·ÖÏí£º½éÉÜ¡¢Ê¹Óᢴ洢¡¢Ëã·¨¡¢ÓÅ»¯....
- phpʹÓÃmb_detect_encoding¼ì²â×Ö·û´®±àÂë
ÆÀÂÛ