MongoDB 浠庡叆闂ㄥ埌绮鹃€氫笓棰樻暀绋?一
MongoDB 浠庡叆闂ㄥ埌绮鹃€氫笓棰樻暀绋?1
鏈€杩戞湁濂藉鍚屼簨閮藉湪鐢╩ongodb锛屼竴涓柊鐨勯潰鍚戞枃妗e瀷浠嬩簬闈㈠悜瀵硅薄涓庡叧绯诲瀷涔嬮棿鍏嶈垂鐨勬暟鎹簱锛屾嵁璇存湁鎷ユ湁姣斾紶缁熸暟鎹簱鏇撮珮鐨勬€ц兘銆傝秮浠婂ぉ鏃╀笂鏈夌┖锛屽氨鐮旂┒浜嗕竴涓嬨€?
棣栧厛涓妋ongodb瀹樼綉锛坵ww.mongodb.org锛夌湅浜嗕竴涓嬪紑濮嬫枃妗o紝涓嬩簡涓獁indows鐗堢殑锛岃浜嗕竴涓嬶紝骞朵笖鍐欎簡鍑犱釜绠€鍗曠殑渚嬪瓙锛屾祴璇曚簡涓€涓嬶紝缁忚繃娴嬭瘯锛宮ongodb纭疄濂界敤锛屼篃寰堢畝鍗曪紝褰撶劧鍏朵腑涔熼亣鍒颁簡寰堝闂锛屽洜姝や负浜嗚兘璁╀互鍚庣殑鍚屽浠洿濂界殑鍏ラ棬锛屾墍浠ュ仛涓€涓畝鍗曠殑浠嬬粛銆傚鏋滀綘鎯冲敖蹇叆闂紝鍒欏彲浠ユ寜鐓у涓嬬殑姝ラ杩涜銆?
1锛屽畨瑁呭苟鍚姩鏁版嵁搴?
浠庡畼缃戯紙www.mongodb.org/downloads锛変笅杞戒竴涓€傚悎浣犲钩鍙扮殑鐗堟湰锛屾垜鐨勭郴缁熸槸win7 64浣嶇殑锛屼笅杞芥枃浠朵篃灏?0鍑燤锛屽皢涓嬭浇鐨勬枃浠惰В鍘嬫斁鍒颁换浣曠洰褰曪紝鏈€濂介伩鍏嶄娇鐢ㄥ甫绌烘牸鍜屼腑鏂囩殑鐩綍锛屾湰鏈哄皢鍏惰В鍘嬭嚦C鐩橈紝骞跺皢鏂囦欢澶规敼鍚嶄负mongodb锛岃繖鏍蜂篃鏄负浜嗗悗闈㈣緭鍏ョ洰褰曟洿鏂逛究銆?
杩涘叆mongodb鐩綍锛屾垜浠彂鐜版湁濡備笅鐩綍缁撴瀯
鎵€浠ユ暣涓猰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爜
2.5锛屾煡鐪嬮泦鍚堝綋涓墍鏈夋枃妗?
姝ゆ椂鍙戠幇锛屽湪鏂囨。鐨勫墠闈㈠浜嗕竴鍒?_id"锛岃繖鏄嚜鍔ㄥ姞杩涘幓鐨勶紝涓嶇敤绠′粬銆?
2.6锛屽垹闄よ褰?
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爜
娉ㄦ剰姝ょ鏂瑰紡浼氬皢鍓峃琛屽叏鏌ュ嚭鏉ワ紝鎵€浠ュ鎬ц兘鏈夎緝澶у奖鍝嶃€?
2.8锛屾牴鎹潯浠舵煡璇?
鐜拌鏌ヨ鍑簓澶т簬10鐨勬墍鏈夎褰曪細
Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.db.user.find({y:{$gt:10}});
鍏朵腑$gt鐨勬剰鎬濆氨鏄€滃ぇ浜庘€濓紝褰撶劧璇昏€呭彲鎺ㄥ嚭鍏朵粬N绉嶈〃杈俱€?
2.9锛屾煡璇㈡寚瀹氬垪
Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
2.10锛屽彧鏌ョ涓€鍒?
鏈夌殑鏃跺€欐垜浠彧闇€瑕佺涓€琛岀殑鍊硷紝濡傛灉鑷繁缂栫▼瀹炵幇鏄惧緱鏈変簺楹荤儲锛屽洜姝ゆ暟鎹簱涓烘垜浠?
鎻愪緵浜嗕竴涓柟娉曪細db.user.findOne();
2.11锛岄檺鍒舵渶澶ц褰曚粠鑰屾彁楂樻€ц兘
鎴戜滑鍙互閫氳繃limit鏉ラ檺鍒舵煡璇㈢殑鏈€澶ц鏁帮紝濡備笅锛?
2.12锛屼慨鏀硅褰?
灏嗙涓€鏉涓?鐨勮褰曚慨鏀逛负鍚庨潰鐨勫€硷紝
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爜
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爜
3.4锛屽緱鍒版寚瀹氶泦鍚?
Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.DBCollection coll = db.getCollection("user");
3.5锛屾彃鍏ユ枃妗?
Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
13.
3.6锛屾煡璇㈤泦鍚堜腑鐨勭涓€浠芥枃妗?
Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.DBObject myDoc = coll.findOne();
3.7锛屽鍔犲浠芥枃妗?
Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
3.8锛岀粺璁¢泦鍚堜腑鏂囨。鐨勬潯鏁?
Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.System.out.println(coll.getCount());
3.9锛屽埄鐢ㄦ父鏍囧緱鍒版墍鏈夎褰?
Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
1.3.10锛屾煡璇㈡寚瀹氭枃妗?nbsp;
鏈夋椂涓负浜嗘柟渚挎垜浠篃鍙互鍐欐垚杩欑褰㈠紡锛?
Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
3.11锛屽垱寤轰竴涓储寮?
Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
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爜
4.2锛屾鍒欒〃杈惧紡鐨勮繍鐢?
Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
4.3锛屾棩鏈熺被鍨?
Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
4.4, 鏁扮粍
Java浠g爜 澶嶅埗浠g爜 鏀惰棌浠g爜
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爜
鍏朵腑"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闄嶅簭鎺掑垪
鏈€杩戞湁濂藉鍚屼簨閮藉湪鐢╩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闄嶅簭鎺掑垪