MongoDB 浠庡叆闂ㄥ埌绮鹃€氫笓棰樻暀绋?一

MongoDB 浠庡叆闂ㄥ埌绮鹃€氫笓棰樻暀绋?1
鏈€杩戞湁濂藉鍚屼簨閮藉湪鐢╩ongodb锛屼竴涓柊鐨勯潰鍚戞枃妗e瀷浠嬩簬闈㈠悜瀵硅薄涓庡叧绯诲瀷涔嬮棿鍏嶈垂鐨勬暟鎹簱锛屾嵁璇存湁鎷ユ湁姣斾紶缁熸暟鎹簱鏇撮珮鐨勬€ц兘銆傝秮浠婂ぉ鏃╀笂鏈夌┖锛屽氨鐮旂┒浜嗕竴涓嬨€?
  
   棣栧厛涓妋ongodb瀹樼綉锛坵ww.mongodb.org锛夌湅浜嗕竴涓嬪紑濮嬫枃妗o紝涓嬩簡涓獁indows鐗堢殑锛岃浜嗕竴涓嬶紝骞朵笖鍐欎簡鍑犱釜绠€鍗曠殑渚嬪瓙锛屾祴璇曚簡涓€涓嬶紝缁忚繃娴嬭瘯锛宮ongodb纭疄濂界敤锛屼篃寰堢畝鍗曪紝褰撶劧鍏朵腑涔熼亣鍒颁簡寰堝闂锛屽洜姝や负浜嗚兘璁╀互鍚庣殑鍚屽浠洿濂界殑鍏ラ棬锛屾墍浠ュ仛涓€涓畝鍗曠殑浠嬬粛銆傚鏋滀綘鎯冲敖蹇叆闂紝鍒欏彲浠ユ寜鐓у涓嬬殑姝ラ杩涜銆?
  
   1锛屽畨瑁呭苟鍚姩鏁版嵁搴?
  
   浠庡畼缃戯紙www.mongodb.org/downloads锛変笅杞戒竴涓€傚悎浣犲钩鍙扮殑鐗堟湰锛屾垜鐨勭郴缁熸槸win7 64浣嶇殑锛屼笅杞芥枃浠朵篃灏?0鍑燤锛屽皢涓嬭浇鐨勬枃浠惰В鍘嬫斁鍒颁换浣曠洰褰曪紝鏈€濂介伩鍏嶄娇鐢ㄥ甫绌烘牸鍜屼腑鏂囩殑鐩綍锛屾湰鏈哄皢鍏惰В鍘嬭嚦C鐩橈紝骞跺皢鏂囦欢澶规敼鍚嶄负mongodb锛岃繖鏍蜂篃鏄负浜嗗悗闈㈣緭鍏ョ洰褰曟洿鏂逛究銆?
  
   杩涘叆mongodb鐩綍锛屾垜浠彂鐜版湁濡備笅鐩綍缁撴瀯
   |--mongodb 
	       |-- bin 
	            |-- mongo.exe 
	|-- mongod.exe ........ 


鎵€浠ユ暣涓猰ongodb鏄潪甯哥畝鍗曠殑锛屼互涓婂垪鐨勪篃鏄垜浠渶甯哥敤鐨勫懡浠わ紝鍏跺畠鏆傛椂涓嶈В閲娿€?
涓轰簡浠ュ悗鐨勬搷浣滄柟渚匡紝鍥犳鎴戜滑灏嗗綋鍓嶇殑bin鐩綍鍔犲叆path锛屽鏋滀笉浼氱殑鍙互鐧惧害Google銆?
鐜板湪鎵撳紑涓€涓懡浠ょ獥鍙o紝閿叆mongod锛屽垯绐楀彛浼氭彁绀烘暟鎹簱鍚姩澶辫触锛屽鏋滀綘浠旂粏鐪嬫帶鍒跺彴鎵撳嚭鐨勬秷鎭紝鏈夊涓嬭繖涔堜竴琛岋細
dbpath (/data/db/) does not exist, terminating
鐩綍/data/db/鏄疞inux涓嬮潰鐨勮〃绀烘硶锛屼唬琛ㄧ潃鏁版嵁搴撻粯璁ょ殑鏁版嵁鏂囦欢鐩綍锛岃€屼笂闈㈢殑鎻愮ず鐨勬剰鎬濇槸璇存暟鎹簱鐩綍涓嶅瓨鍦紝閭d箞鎴戜滑灏卞湪mongodb姝㈠綍涓嬫墜鍔ㄥ缓绔嬩竴涓洰褰昫b锛屽綋鐒舵鏃跺睆骞曚笂鍙兘鏈変簺涔憋紝杩欐椂鍙緭鍏ls杩涜娓呭睆鎿嶄綔銆傚啀杈撳叆鍛戒护锛歮ongodb --dbpath c:/mongodb/db锛屾鏃剁獥鍙f墦鍑哄嚑琛屾棩蹇楋紝鐒跺悗澶勪簬绛夊緟鐘舵€佷簡锛岄偅涔堝氨琛ㄧず鏁版嵁搴撳惎鍔ㄦ垚鍔熶簡锛佸綋鐒惰繖涓獥鍙d笉鑳藉叧闂€?


2锛岀櫥褰曞苟鎿嶄綔鏁版嵁搴擄紙Shell鏂瑰紡锛?

2.1锛岃繛鎺?
鎵撳紑鍛戒护绐楀彛锛岄敭鍏ongo锛屽鏋滅郴缁熸彁绀猴細connecting to: test锛岃〃绀鸿繛鎺ユ垚鍔熴€?

2.2锛屾煡鐪嬫墍鏈夊簱
    閿叆show dbs,鍒欎細鏄剧ず鍑哄綋鍓嶆暟鎹簱涓墍鏈夌殑鏁版嵁搴撳悕绉般€傚湪mongodb閲岄潰鏄笉鐢?
鍘绘墜鍔ㄥ缓绔嬩竴涓暟鎹簱鐨勶紝浣犲彧瑕佺洿鎺ヤ娇鐢ㄥ氨濂斤紝濡傛灉涓嶅瓨鍦ㄦ暟鎹簱寮曟搸浼氬府鎴戜滑
鍒涘缓浠栦滑銆傝繖涓€鐐逛笌浼犵粺鏁版嵁搴撶浉姣旀湁浜涗笉鍚屻€?

2.3锛屼娇鐢╩ydb
閿叆use mydb锛屼娇鐢ㄦ暟鎹簱mydb锛屽綋鐒?
mongodb浼氬府鍔╂垜浠嚜鍔ㄥ垱寤轰粬浠紝褰撶劧杩欎釜鏃跺€欐暟鎹簱杩樻槸绌虹殑锛屽彲浠ラ€氳繃杈撳叆
show dbs鏉ョ‘璁よ繖涓€鐐广€?
  
   2.4锛屾柊澧炶褰?
   杈撳叆锛?


Java浠g爜
1.db.user.save({name:'Rod',age:30})  



  
   2.5锛屾煡鐪嬮泦鍚堝綋涓墍鏈夋枃妗?
 
 db.user.find()
鍙煡鐪嬪嚭褰撳墠搴搖ser闆嗗悎涓墍鏈夌殑鏂囨。锛屽涓嬪浘鎵€绀猴細
 
 { "_id" : ObjectId("4df2201ac905b4e2a5f555cb"), "name" : "Rod", "age" : 30 } 

   姝ゆ椂鍙戠幇锛屽湪鏂囨。鐨勫墠闈㈠浜嗕竴鍒?_id"锛岃繖鏄嚜鍔ㄥ姞杩涘幓鐨勶紝涓嶇敤绠′粬銆?
  
   2.6锛屽垹闄よ褰?
  
db.user.remove()
灏嗗垹闄ゆ墍鏈夎褰曪紝
db.user.remove({name:'Rod'})
灏嗗垹闄ゆ寚瀹氳褰?
  
   2.6锛屼繚瀛樺鏉¤褰?
   杈撳叆锛?


Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.for(var i=1;i<=20;i++) db.user.save({x:8,y:i}) 

锛屽彲浠ョ湅鍑烘暣涓娉曞緢鍍?
   JS锛屽叾瀹炰綘姝e湪浣跨敤鐨勫氨鏄竴涓狫avaScript Shell銆傛鏃跺彲浠ヨ緭鍏b.user.find()
   鏉ユ煡鐪嬫墍鏈夎褰曘€?
  
   2.7锛岃凯浠e櫒鐨勪娇鐢?
   鎴戜滑鍐嶅悜闆嗗悎涓彃鍏ヤ竴鏉¤褰曪細db.user.save({x:'test'})锛屽啀娆℃煡鐪嬫墍鏈夎褰?
   db.user.find()锛屽垯鍙戠幇鍙樉绀哄嚭浜嗗墠20鏉¤褰曘€傛鏃跺彲浠ヨ緭鍏t锛坕teraor锛夋潵
   鏌ョ湅浣欎笅鐨勮褰曘€?
  
   鍦╩ongodb閲屽彲浠ュ皢cursor褰撴垚鏁扮粍鏉ヤ娇鐢紝濡備笅鎵€绀猴細
 


Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.var cursor = db.user.find(); // 灏嗘父鏍囩紦瀛樿捣鏉? 
2.   printjson(cursor[4]); // 鎵撳嵃鍑虹5鏉¤褰? 



   娉ㄦ剰姝ょ鏂瑰紡浼氬皢鍓峃琛屽叏鏌ュ嚭鏉ワ紝鎵€浠ュ鎬ц兘鏈夎緝澶у奖鍝嶃€?
  
   2.8锛屾牴鎹潯浠舵煡璇?
   鐜拌鏌ヨ鍑簓澶т簬10鐨勬墍鏈夎褰曪細
 


Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.db.user.find({y:{$gt:10}}); 


   鍏朵腑$gt鐨勬剰鎬濆氨鏄€滃ぇ浜庘€濓紝褰撶劧璇昏€呭彲鎺ㄥ嚭鍏朵粬N绉嶈〃杈俱€?
  
   2.9锛屾煡璇㈡寚瀹氬垪
  


Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.db.user.find({x:8},{y:true});// 鏌ヨ鍑簒=8鐨勬墍鏈夎褰曠殑y鍒? 
2.       db.user.find({},{y:true}); // 鏌ヨ鍑烘墍鏈夌殑Y鍒? 



  
   2.10锛屽彧鏌ョ涓€鍒?
   鏈夌殑鏃跺€欐垜浠彧闇€瑕佺涓€琛岀殑鍊硷紝濡傛灉鑷繁缂栫▼瀹炵幇鏄惧緱鏈変簺楹荤儲锛屽洜姝ゆ暟鎹簱涓烘垜浠?
   鎻愪緵浜嗕竴涓柟娉曪細db.user.findOne();
  
   2.11锛岄檺鍒舵渶澶ц褰曚粠鑰屾彁楂樻€ц兘
   鎴戜滑鍙互閫氳繃limit鏉ラ檺鍒舵煡璇㈢殑鏈€澶ц鏁帮紝濡備笅锛?
   db.user.find().limit(4); // 鍙樉绀哄嚭鍓嶅洓鏉?

  
   2.12锛屼慨鏀硅褰?
   灏嗙涓€鏉涓?鐨勮褰曚慨鏀逛负鍚庨潰鐨勫€硷紝
db.user.update({x:4},{x:4,y:1}); 

  
   3锛孧ongoDB 鏁版嵁缁撴瀯
  
   浠庝互涓婂彲浠ョ湅鍑猴紝姣忎竴涓狹ongoDB鍖呭惈浜嗗涓簱锛堥€氳繃show dbs鏌ョ湅锛夛紝杩欎簺搴撻兘鏄湪绗竴娆′娇鐢ㄦ椂鑷姩鍒涘缓鐨勫彲浠ラ€氳繃use   dbName鏉ヤ娇鐢ㄦ寚瀹氬簱銆傛瘡涓€涓簱鍖呭惈浜嗗涓泦鍚堬紝鍙互浣跨敤鍛戒护show collections 鏄剧ず鎵€鏈夐泦鍚堬紝鎵€浠ユ垜浠湪鎿嶄綔鏂囨。鐨勬椂鍊欒鎵嬪姩鎸囧畾闆嗗悎(db.user.find)锛屾瘡涓泦鍚堝寘鍚浠芥枃妗o紝涔熷氨鏄痡son瀵硅薄銆?
  
  
   4锛屽埄鐢╦ava鎿嶄綔MongoDB
   浠庡畼缃戜笅杞絡ava鐗堟湰鐨勯┍鍔ㄥ苟灏嗗叾鍔犲叆classpath銆?

   3.1锛屽缓绔嬭繛鎺?




Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.Mongo m = new Mongo(); // 杩炴帴鏈湴鐨?7017绔彛  
2.   // or  
3.   Mongo m = new Mongo( "localhost" ); // 榛樿绔彛27017  
4.   // or  
5.   Mongo m = new Mongo( "localhost" , 27017 ); // 鎸囧畾涓绘満涓庣鍙? 
6.   DB db = m.getDB( "mydb" ); // 鍙栧緱鎸囧畾鐨勫簱  



   
   3.2锛岀敤鎴疯璇侊紙鍙€夛級
   鍦ㄧ櫥褰曟暟鎹簱鏃讹紝鍦ㄦ暟鎹簱鍚姩鏃跺彲浠ユ寚瀹氭槸鍚﹂渶瑕佽璇侊紙mongod --auth .....锛夛紝
   姝ゆ椂杩炴帴鏃跺氨闇€瑕佺敤鎴峰悕鍜屽瘑鐮侊紙--serviceUser xx --servicePassword xx锛夛紝濡備笅锛?
 


Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.boolean auth = db.authenticate(myUserName, myPassword); 


  
   3.3锛屽緱鍒版寚瀹氬簱鐨勬墍鏈夐泦鍚?
  
 


Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.Set<String> colls = db.getCollectionNames();  
2.      for (String s : colls) {  
3.          System.out.println(s);  
4.      }  


  
   3.4锛屽緱鍒版寚瀹氶泦鍚?
 


Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.DBCollection coll = db.getCollection("user"); 


  
   3.5锛屾彃鍏ユ枃妗?



Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.BasicDBObject doc = new BasicDBObject();  
2.    
3.  doc.put("name", "MongoDB");  
4.     doc.put("type", "database");  
5.     doc.put("count", 1);  
6.      
7.  BasicDBObject info = new BasicDBObject();  
8.     info.put("x", 203);  
9.     info.put("y", 102);  
10.       
11.  doc.put("info", info);  
12.     coll.insert(doc); // 淇濆瓨  

13.   


   3.6锛屾煡璇㈤泦鍚堜腑鐨勭涓€浠芥枃妗?
 


Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.DBObject myDoc = coll.findOne(); 


  
   3.7锛屽鍔犲浠芥枃妗?



Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.for (int i=0; i < 100; i++) {  
2.         coll.insert(new BasicDBObject().append("i", i));  
3.     }  


  
   3.8锛岀粺璁¢泦鍚堜腑鏂囨。鐨勬潯鏁?
  


Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.System.out.println(coll.getCount()); 


  
   3.9锛屽埄鐢ㄦ父鏍囧緱鍒版墍鏈夎褰?



Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.DBCursor cur = coll.find();  
2.     while(cur.hasNext()) {  
3.         System.out.println(cur.next());  
4.     }  

  



Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.3.10锛屾煡璇㈡寚瀹氭枃妗?nbsp;
2.  BasicDBObject query = new BasicDBObject();  
3.       
4.  query.put("x", 8);  
5.     cur = coll.find(query);  
6.       
7.  while(cur.hasNext()) {  
8.          System.out.println(cur.next());  
9.     }  



  
   鏈夋椂涓负浜嗘柟渚挎垜浠篃鍙互鍐欐垚杩欑褰㈠紡锛?
 


Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.query.put("i", new BasicDBObject("$gt", 20).append("$lte", 30));   
2.   // i.e. 20 < i <= 30  

 


   3.11锛屽垱寤轰竴涓储寮?
 


Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.coll.createIndex(new BasicDBObject("i", 1));   
2.   // create index on "i", ascending  
3.     



   3.12锛屾煡璇㈤泦鍚堜腑鐨勭储寮曞垪琛?



Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.List<DBObject> list = coll.getIndexInfo(); 


  
   3.13锛屽緱鍒版墍鏈夌殑搴撳悕
 


Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.Mongo m = new Mongo(); 
2.   m.getDatabaseNames(); 


  
   3.14锛屽垹闄や竴涓簱
 


Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.m.dropDatabase("my_new_db"); 


  
  
  
   4锛孧ongoDB绫诲瀷涓巎ava绫诲瀷
  
   4.1锛岃嚜鍔ㄦ垚鐢熶富閿?
 


Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.ObjectId id = new ObjectId();  
2.   ObjectId copy = new ObjectId(id);  


  
   4.2锛屾鍒欒〃杈惧紡鐨勮繍鐢?
 


Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.Pattern john = Pattern.compile("joh?n", CASE_INSENSITIVE);  
2.      BasicDBObject query = new BasicDBObject("name", john);  
3.      // finds all people with "name" matching /joh?n/i  
4.      DBCursor cursor = collection.find(query);  



  
   4.3锛屾棩鏈熺被鍨?
 


Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.java.util.Date now = new java.util.Date();  
2.      BasicDBObject time = new BasicDBObject("ts", now);  
3.      collection.save(time);  



  
   4.4, 鏁扮粍



Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.ArrayList x = new ArrayList();  
2.     x.add(1);  
3.     x.add(2);  
4.     x.add(new BasicDBObject("foo", "bar"));  
5.     x.add(4);  
6.     BasicDBObject doc = new BasicDBObject("x", x);  
7.    


   4.5锛屼簩杩涘埗鏁版嵁
   瀛楄妭鏁扮粍锛坆yte[]锛変細琚嚜鍔ㄥ寘瑁呮垚浜岃繘鍒剁被鍨嬨€?
  
   4.6锛屾椂闂?
   Timestamp浼氳杞崲鎴怋SONTimestamp銆?
  
   4.7锛屾簮浠g爜鏁版嵁
   婧愪唬鐮佹暟鎹唬琛ㄤ簡JavaScript浠g爜銆侰odeWScope绫讳唬琛ㄤ簡杩欑鏁版嵁銆?
  
  
  
   5锛岄珮绾ф搷浣滈儴鍒?
  
   5.1锛屾暟鎹嵁瀹夊叏
  
   涓轰簡浣縈ongoDB瀹夊叏鐢熸晥锛屽繀椤讳互--auth鍙傛暟鍚姩锛屽悓鏃惰繕瑕佸湪db.system.users鏂囨。涓鍔犵敤鎴蜂俊鎭?
  
   濡傛灉鍦╠b.system.users涓棤鏁版嵁锛屽嵆浣夸互--auth鍚姩锛屽浜庢湰鍦扮殑璁块棶涔熸槸鍏佽鐨勩€?
  
   澧炲姞涓€涓柊鐨勭敤鎴凤細db.addUser("foo", "bar");
   鏌ヨ鍒氭墠澧炲姞鐨勭敤鎴凤細db.system.users.find();
   鍒犻櫎鐢ㄦ埛锛歞b.removeUser("foo");
   涓轰簡鎻愰珮鏌ヨ鎬ц兘鍜屽畨鍏ㄦ€э紝涔熷彲澧炲姞鍙鐢ㄦ埛锛歞b.addUser("foo", "bar", true);
  
  
   姝ゆ椂铏界劧鐢ㄦ埛宸茬粡鏈変簡锛屼絾鏄€庝箞鍘绘祴璇曟槸鍚︾敓鏁堜簡鍛紵鍏堣繘琛岃璇佹祴璇曚竴涓嬶紝濡備笅锛?
   db.auth("foo", "bar");
   濡傛灉鍦ㄦ湇鍔$鎵撳嚭1鍒欒〃绀鸿璇侀€氳繃锛屽鎴风鍙互浣跨敤浜嗭紝濡傛灉鏄?琛ㄧず涓嶉€氳繃
  
   閭d箞鍦ㄥ鎴风鍙互閫氳繃濡備笅浠g爜杩涜璁よ瘉锛?
   db.authenticate("foo", "bar".toCharArray());
   鐢辨鍙煡锛屾墍鏈夌殑鐢ㄦ埛淇℃伅鏄姞鍦ㄦ暟鎹簱涓婇潰鐨勶紝姣忎釜搴撻兘鏈夎嚜宸辩殑鐢ㄦ埛淇℃伅銆?
  
   濡傛渚垮彲澧炲姞瀹夊叏璁よ瘉鍔熻兘浜嗭紒
  
  
   2011.06.10 鏈畬寰呯画銆傘€傘€傘€傘€傘€傘€傘€傘€傘€?
  
  
5.2锛屽紩鐢╲s 鍐呭祵

鍦ㄥ叧绯诲瀷鏁版嵁搴撲腑锛屾垜浠彲浠ラ€氳繃澶栭敭寮曠敤鏉ヨ〃杈句竴瀵瑰鍏宠仈锛屽缓绔嬩腑闂磋〃鏉ヨ〃杈惧瀵瑰鍏宠仈銆傚湪MongoDB涓嵈娌℃湁杩欑鏈哄埗锛屾垜浠彲浠ラ€氳繃瀵硅薄鐨勫紩鐢ㄥ叧绯绘潵瀹炵幇杩欑鍏宠仈锛屼篃鍙互鎶婂叧鑱旂殑鏂囨。鍐呭祵鍒版枃妗e綋涓€?
瀵逛簬寮曠敤杩欑鏂瑰紡锛屾垜浠彲浠ラ€欴BRef杩欎釜绫昏繘琛屽疄鐜般€?

閭d箞鍦ㄥ疄闄呭伐浣滃綋涓紝鎴戜滑搴旇閫夋嫨鍝瀛樺偍鏂瑰紡锛屾湁濡備笅瑙勫垯锛?
1锛?椤跺眰瀵硅薄搴旇鏈夎嚜宸辩殑闆嗗悎
2锛?鏄庣粏瀵硅薄搴旇琚祵鍏ョ埗瀵硅薄锛屼緥濡侽rderDetail涓嶰rder
3锛?鎷ユ湁鍖呭惈鍏崇郴鐨勫鏄撶敤搴旇琚祵鍏?
4锛?瀵逛簬澶氬澶氬叧鑱斿簲璇ヤ娇鐢ㄦ暟鎹簱寮曠敤
5锛?瀵逛簬閭g绋冲畾鐨勬瘮杈冨皬鐨勯泦鍚堝彲浠ュ湪鏈嶅姟鍣ㄧ灏嗗叾缂撳瓨璧锋潵浠庤€屾彁楂樻€ц兘
6锛?涓嶈兘鍘诲紩鐢ㄤ竴涓祵鍏ョ殑瀵硅薄锛岃嚦灏戠洰鍓嶈繕鏃犳硶瀹炵幇
7锛?鎴戜滑寰堥毦鍘荤粺璁″祵鍏ョ殑瀵硅薄
8锛?濡傛灉宓屽叆鐨勫璞″お澶氬お澶т細瀵艰嚧鍗曚釜瀵硅薄杈惧埌浠栫殑鏈€澶у€?
9锛?璁颁綇鏈€鍚庝竴鏉★細濡傛灉閬囧埌鎬ц兘闂锛岄偅涔堣浣跨敤宓屽叆鏂瑰紡杩涜瀛樺偍

5.3锛屾暟鎹簱浼樺寲

1锛夊浜庢帓搴忕殑瀛楁锛岃鍔犲叆绱㈠紩
鐜板湪鏍规嵁y瀛楁鍊掑簭鏄剧ず锛歞b.user.find().sort({y: -1});锛屼负浜嗘彁楂樻€ц兘閭d箞闇€瑕佸湪瀛楁y涓婂姞鍏ョ储寮?
db.user.ensureIndex({y:1});杩欐牱涓€鏉ワ紝灏卞彲浠ユ牴鎹储寮曟帓搴忥紝鑰屼笉鏄洿鎺ユ煡缁氶泦鍚堜腑鐨勬墍鏈夋枃妗c€?
2锛夐檺鍒舵渶澶ц褰曟暟锛歞b.user.find().limit(10);
3锛夊彧鏌ヨ鎵€闇€瑕佺殑閿紝鑰屼笉鏄墍鏈夊叏鏌ュ嚭鏉ワ細db.user.find({}, {y: 1});
4锛夌粺璁¤褰曟潯鏁板埄鐢╟ount()鏂规硶锛歞b.user.find().count();
5锛夊己鍒朵娇鐢ㄦ寚瀹氱储寮曪細db.user.find().hint({y: 1});

5.4锛岄珮绾ф煡璇?

1锛夊埄鐢ㄧ储寮曟彁楂樻煡璇㈤€熷害
棣栧厛鎴戜滑鍦▁瀛楁涓婂缓绔嬬储寮曪細db.user.ensuerIndex({x : 1});
鐒跺悗鍐嶆煡璇細db.user.find({x:8}, {_id: 0, x: 1}).explain(); 浼氭湁濡備笅杈撳嚭锛?



Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.{  
2.        "cursor" : "BtreeCursor x_1",  
3.        "nscanned" : 19,  
4.        "nscannedObjects" : 19,  
5.        "n" : 19,  
6.        "millis" : 0,  
7.        "nYields" : 0,  
8.        "nChunkSkips" : 0,  
9.        "isMultiKey" : false,  
10.        "indexOnly" : true,  
11.        鈥︹€︹€︹€︹€︹€︹€︹€︹€?  
12.}  



鍏朵腑"indexOnly" : true浠h〃鐫€姝ゆ鏌ヨ鍚敤浜嗙储寮曘€?
涓€鑸殑鏌ヨ涓嶄細鍒╃敤绱㈠紩锛岄櫎闈炴弧瓒充互涓嬫潯浠讹紝
A锛?蹇呴』鍒楀嚭瑕佽繑鍥炵殑瀛楁鍚嶏紝杩欐牱鎵嶈兘鍐冲畾鏄惁闇€瑕佸惎鐢ㄧ储寮?
B锛?蹇呴』鏄剧ず鐨勬寚鍑轰笉鏄剧ず_id瀛楁{ _id : 0}

2锛夊埄鐢ㄢ€?鈥濓紙鐐瑰彿锛夎繘琛屽璞¢棿鐨勫鑸?
> db.user.find({}, {鈥渪.y鈥?: 1});

3锛夋煡璇㈡寚瀹氳寖鍥寸殑鍊硷細db.user.find({y: {$gt : 4, $lt : 10}}); // 4 < y < 10


4锛夊尮閰嶆墍鏈?all锛歞b.things.find( { a: { $all: [ 2, 3 ] } } );

5锛夊瓨鍦ㄦ€у垽鏂?exists锛?
db.things.find( { a : { $exists : true } } ); // 濡傛灉瀛樺湪鍒欒繑鍥?
db.things.find( { a : { $exists : false } } ); // 濡傛灉涓嶅瓨鍦ㄥ垯杩斿洖

6锛夋眰浣?mod锛歞b.things.find( "this.a % 10 == 1")锛屼篃鍙啓鎴愬涓嬪舰寮忥細
db.things.find( { a : { $mod : [ 10 , 1 ] } } )

7锛変笉绛変簬$ne锛歞b.things.find( { x : { $ne : 3 } } );

8锛塈N瀛愬彞$in锛歞b.things.find({j:{$in: [2,4,6]}});

9锛塏ot In瀛愬彞$nin锛歞b.things.find({j:{$nin: [2,4,6]}});

10锛塐R鏉′欢$or锛歞b.foo.find( { $or : [ { a : 1 } , { b : 2 } ] } )

11锛夊埄鐢ㄦ鍒欒〃杈惧紡杩涜澶嶆潅鍖归厤



Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.db.customers.find( { name : /acme.*corp/i } ); 
2.db.customers.find( { name : { $regex : 'acme.*corp', $options: 'i' } } ); 
3.db.customers.find( { name : { $regex : /acme.*corp/i, $nin : ['acmeblahcorp'] } } ); 



i琛ㄧず澶у皬鍐欎笉鏁忔劅

12锛夊彇鍙嶆搷浣?not锛歞b.customers.find( { name : { $not : /acme.*corp/i } } );

13锛夌粺璁℃枃妗f暟锛?
nstudents = db.students.find({'address.state' : 'CA'}).count();
涓嶈杩欐牱鍋氾紝杩欐牱浼氬鑷村鎴风鎺掑簭锛屽鍔犵綉缁滀紶杈?
nstudents = db.students.find({'address.state' : 'CA'}).toArray().length; // VERY BAD

14锛夊垎椤垫煡璇細


Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.n = db.students.find().skip(20).limit(10).count(true); 




15锛夋帓搴弒ort()锛?


Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.db.myCollection.find().sort( { ts : -1 } ); // 鎸塗S闄嶅簭鎺掑垪