Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
NoSQLÖ®¡¾MongoDB¡¿Ñ§Ï°£¨ÉÏ£©
 
×÷Õߣºjyzhou À´Ô´£º²©¿ÍÔ° ·¢²¼ÓÚ£º2015-10-9
  2368  次浏览      27
 

NoSQLÖ®¡¾MongoDB¡¿Ñ§Ï°£¨Ò»£©£º°²×°ËµÃ÷

¼ò½é:

MongoDB ×ÊÁϺÍÊý¾ÝÒѾ­×ã¹»¶àÁË£¬¾Í²»×ö˵Ã÷ÁË£¬¾ßÌåÇë¼û¹ÙÍø¡£ÕâÀïÀ´ËµÃ÷Ubuntuϵݲװ¡£

°²×°£º

Ò»£ºapt°²×°£ºMongodbµÄ°²×°°üÒѾ­¼¯³Éµ½ÁËUbuntuµÄaptÏÂÃæ£¬¿ÉÒÔÖ±½Óapt°²×°¡£

1£¬ ÏȲ鿴£º¿´ÊÇ·ñÓа²×°°ü

2£¬ ÒªÊÇûÓеϰÐèÒª×Ô¼ºÌí¼ÓÔ´£¨10.04£©£¬»òÔòÏëÒª°²×°×îеİ汾£º

ûÓÐaptÔ´£¬·½·¨Ò»£º

¢Ù ÔÚ/etc/apt/sources.list ÖÐÌí¼Ó£º

deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen

¢Ú ÔÙÖ´ÐУº

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

¢Û ×îºóÔÙ¸üÐÂÏÂÊý¾ÝÔ´£º

apt-get update

¢Ü °²×°:

sudo apt-get install mongodb

¢Ù ÅäÖÃÈí¼þ°ü¹ÜÀíϵͳ:µ¼È빫¹²GPGÃÜÔ¿°ü:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

¢Ú ´´½¨Ò»¸ö10gen.listÎļþ£º

echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/10gen.list

¢Û ÖØÐ¼ÓÔØ£º

sudo apt-get update

¢Ü °²×°£º

sudo apt-get install mongodb-10gen

sudo apt-get install mongodb-10gen

apt-get install mongodb-10gen=2.4.3

3£¬ ÒªÊÇÓаüµÄ»°£¨12.04£©£¬¾ÍÖ±½Ó°²×°£¬µÚ2²½¾Í²»ÐèÒª²Ù×÷ÁË¡£

4£¬ ²âÊÔ

¶þ£ºubuntu ¶þ½øÖư²×°Ê¹ÓÃ

1£¬ ÏÂÔØ£¬µ½ http://www.mongodb.org/downloads ÏÂÔØÊʺÏ×Ô¼ºµÄ°æ±¾µÄMongodb

±ÈÈçÎÒµÄϵͳÊÇ32λ£º

²é¿´°æ±¾£ºlsb_release -a

²é¿´Î»Êý£ºfile /sbin/init

32λÔòÏÂÔØ£º

wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.4.3.tgz

64λÔòÏÂÔØ£º

wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.3.tgz

2£¬ ½âѹ:tar zxvf package

°ÑÕâЩÎļþ×ö³ÉÈíÁ¬½Óµ½/usr/bin Ŀ¼Ï£º

ln -s /home/zhoujy/mongodb/mongodb-linux-i686-2.4.3/bin/mongo /usr/bin/mongo

3£¬ ´´½¨ÎļþĿ¼ÒÔ¼°ÕʺÅ

useradd mongodb
mkdir -p /var/lib/mongodb
mkdir -p /var/log/mongodb
chown -R mongodb:mongodb /var/lib/mongodb/
chown -R mongodb:mongodb /var/log/mongodb/

4£¬ Æô¶¯mongodb£¨Ò»£©:Ö¸¶¨²ÎÊý

mongod --dbpath /var/lib/mongodb/ --logpath=/var/log/mongodb/mongodb.log & 

5£¬ ÒòΪ¶þ½øÖưü°²×°µÄmongodbÊÇûÓÐÅäÖÃÎļþµÄ£¬ÐèÒª×Ô¼ºÊÖ¶¯±àÒ»¸ö£¬±àдºÃÎļþÖ®ºó·Åµ½/etc/mongodb.conf

6£¬ Æô¶¯ mongodb£¨¶þ£©£ºÖ¸¶¨ÅäÖÃÎļþ(-f)

mongod -f /etc/mongodb.conf

7£¬ ²âÊÔ

NoSQLÖ®¡¾MongoDB¡¿Ñ§Ï°£¨¶þ£©£ºDMLºÍ²éѯ²Ù×÷˵Ã÷ÕªÒª£º

²Ù×÷MongoDBµÄ·½·¨ºÍ¹ØÏµÐÍÊý¾Ý¿â²î±ðºÜ´ó£¬ÏÖÔÚ¶ÔËûÃǽøÐÐ˵Ã÷£¬ºóÆÚ»áÖð²½ÍêÉÆ¡£

##¿ªÍ·±íʾMySQL

** ¿ªÍ·±íʾMongoDB

´´½¨£º

Mongodb£ºÎĵµÊý¾Ý¿â£¬Éó¤´æ·Ç½á¹¹»¯Êý¾Ý£»²»ÐèÒªÊÂÏȹ涨ºÃÎĵµ£¨±í£©µÄ¶¨Òå¡£
##create table Test(¡­¡­)
**db.createCollection('Test')

##drop table Test
**db.Test.drop()

##drop database test
**db.dropDatabase()

ÖØÃüÃû¼¯ºÏ£º

ÖØÃüÃû±í£º
##rename table Test to Test_A;
**db.Test.renameCollection('Test_A');

##create table Test_A select * from Test;
** db.Test.copyTo('Test_A') #Ë÷ÒýûÓи´ÖƵ½yyy¼¯ºÏ
**»òÔòÏȱ¸·Ý£¬ÔÙ»¹Ô­£º Test --> ddd
mongodump --host=127.0.0.1 --port=27017 -ubackup -p --db=abc --collection=Test -o backup/
mongorestore --db=abc --collection=Test_A backup/abc/stu.bson

ÖØÃüÃûÊý¾Ý¿â£º

** db.copyDatabase('test','test_bak') #ÊÇÒ»¸ö¸´ÖÆ£¬ÐèÒª°ÑÔ­¿âɾ³ý¡£
{ "ok" : 1 }

Ô¶³Ì¸´ÖÆÊý¾Ý¿â£º
db.copyDatabase(fromdb, todb, fromhost, username, password)

²åÈ룺

MongoDB²åÈëÊý¾Ýʱ£¬»áÏȰÑÊý¾Ýת»»³ÉBSONÐÎʽ´«ÈëÊý¾Ý¿â£¬
ÔÙ½âÎöBSON£¬¼ìÑéÊÇ·ñ°üº¬¡°_id¡±ºÍÎĵµ²»³¬¹ý4M´óС£¬×îºó´æÈëÊý¾Ý¿â
##insert into Test(name) values(¡­¡­)
**db.Test.insert({"name":"zhoujy"}) --²»ÐèÒªÊÂÏȹ涨ºÃnameÁУ¨¼ü£©

²åÈë¶à¸öÖµ£º
##insert into Test() values(),(),()¡­¡­
**db.Test.insert([{"a":1,"b":2},{"a":2,"b":3},{"a":3,"b":4}])

ɾ³ý£º

ɾ³ýÖ¸¶¨¼Ç¼
##delete from Test where name ='zhoujy'
**db.Test.remove({"name":"zhoujy"})

ɾ³ýËùÓмǼ
##delete from Test
**db.Test.remove()

¸üУº

4¸ö²ÎÊý£¬µÚÒ»¸ö²ÎÊýÊÇÌõ¼þ£»µÚ¶þ¸ö²ÎÊýÊÇÐÞ¸ÄÆ÷£»µÚÈý¸öÊÇupsert¡¾Óо͸üУ¬Ã»ÓÐÔò´´½¨(add column)¡¿£»µÚËĸöΪÊÇ·ñ¸üжàÐУ¬Ä¬ÈÏÊǵÚÒ»ÐС£

$inc ÓÃÓÚintÀàÐ͵Äkey£¨ÁУ©¼Ó¼õ²Ù×÷£¬ÒªÊÇÖ¸¶¨µÄÒª¸üеÄkey²»´æÔÚ£¬Ôò»áÐÂÔö¸Ãkey£¨ÁУ©£º
##update Test set pv=pv+1 where name ='a'£¬alter table Test add column,
**db.Test.update({"name":"a"},{"$inc":{"pv":1}}) --Ö»¸üеÚÒ»Ìõ³öÏֵļǼ£¬+1
**db.Test.update({"name":"a"},{"$inc":{"pv":1}},false,true) --¸üÐÂËùÓзûºÏÌõ¼þµÄ¼Ç¼£¬+1;£¨µÚ4¸ö²ÎÊýÊÇtrue£©
**db.Test.update({"name":"a"},{"$inc":{"pv":-1}},false,true) --¸üÐÂËùÓзûºÏÌõ¼þµÄ¼Ç¼£¬-1
**db.Test.update({"name":"a"},{"$inc":{"pv":-1}},true,true) --ÒªÊǸüÐÂÌõ¼þÕÒ²»µ½¼Ç¼£¬Ä¬ÈÏÊDz»Ö´ÐУ»ÒªÊǵÚ3¸ö²ÎÊýÊÇtrue£¬ Ôò»áÐÂÔöÒ»Ìõ¼Ç¼£¨°üº¬Ìõ¼þkeyºÍ±»¸üеÄkey£©

$set ÓÃÓÚ¸üÐÂÖ¸¶¨key£¨ÁУ©£¬ÒªÊÇÖ¸¶¨µÄÒª¸üеÄkey²»´æÔÚ£¬Ôò»áÐÂÔö¸Ãkey£¨ÁУ©£º
##update Test set name ='A' where pv_bak = -1£¬alter table Test add column,
**db.Test.update({"pv_bak":-1},{"$set":{"name":"A"}}) --Ö»¸üеÚÒ»Ìõ³öÏֵļǼ
**db.Test.update({"pv_bak":-1},{"$set":{"name":"A"}},false,true)

--¸üÐÂËùÓзûºÏÌõ¼þµÄ¼Ç¼£¨µÚ4¸ö²ÎÊýÊÇtrue£©
**db.Test.update({"pv_bak":-11},{"$set":{"Sname":"BB"}},true,true)

--ÒªÊǸüÐÂÌõ¼þÕÒ²»µ½¼Ç¼£¬Ä¬ÈÏÊDz»Ö´ÐУ»ÒªÊǵÚ3¸ö²ÎÊýÊÇtrue£¬Ôò»áÐÂÔöÒ»Ìõ¼Ç¼£¨°üº¬Ìõ¼þkeyºÍ±»¸üеÄkey£©

¶¨Î»£º¿ÉÒÔÐÞ¸ÄÄÚǶÎĵµ£¬Óõ㣨.£©À´±íʾÄÚǶÎĵµÄÚµÄkey£¬È磺
**db.pv.update({"hit.a":1111},{"$set":{"hit.a":1}})

$unset ÓÃÓÚɾ³ýÖ¸¶¨key£¨ÁУ©
##alter table Test drop column ¡­¡­
**db.Test.update({"Sname":"BB"},{"$unset":{"pv_bak":1}}) --ɾ³ýµÚÒ»Ìõ³öÏֵļǼµÄkey(ÁÐ)<pv_bak>
**db.Test.update({"Sname":"BB"},{"$unset":{"pv_bak":1}},true,true)

--ɾ³ý¸´ºÏÌõ¼þµÄ¼Ç¼µÄkey(ÁÐ)<pv_bak>£¬µÚ3¸ö²ÎÊýûÓÐÒâÒå
**db.Test.update({},{"$unset":{"name":1}},false,true) --ɾ³ýÎĵµ£¨±í£©ÖÐËùÓÐnameµÄkey£¨ÁУ©

$rename ÓÃÓÚÖØÃüÃûkey£¨ÁУ©
##alter table Test change column ¡­¡­
**db.Test.update({"name":"A"},{"$rename":{"nl":"age"}}) --ÖØÃüÃûµÚÒ»Ìõ³öÏֵļǼµÄkey(ÁÐ)< nl¡ª¡ª>age >
**db.Test.update({"name":"A"},{"$rename":{"nl":"age"}},true,true) --ÖØÃüÃû¸´ºÏÌõ¼þµÄ¼Ç¼µÄkey(ÁÐ)< nl¡ª¡ª>age >
**db.Test.update({},{"$rename":{"name":"Sname"}},true,true) --ÖØÃüÃûËùÓеļǼµÄkey(ÁÐ)< name¡ª¡ª>Sname >

¸üÐÂÊý×é²Ù×÷£º$push,$ne,$addToSet,$each,$pop,$pull

$push ÏòÖ¸¶¨key£¨ÁУ©Êý×éÖÐ×îºóÌí¼ÓÊý¾Ý£¬ÒªÊÇÖ¸¶¨µÄkey²»´æÔÚ£¬Ôò»áÐÂÔö¸Ãkey£¨ÁУ©£º
**db.Test.update({"Sname":"A"},{"$push":{"cc":1}})

--¶Ô·ûºÏÌõ¼þµÄµÚÒ»Ìõ³öÏÖÊý¾ÝµÄÊý×éccÁÐÌí¼ÓÒ»¸öÖµ1(´æÔÚkey)£¬»òÐÂÔöÊý×écc£¬²¢Ìí¼ÓÖµ1(²»´æÔÚkey)
**db.Test.update({"Sname":"A"},{"$push":{"cc":1}},false,true)

--¶Ô·ûºÏÌõ¼þµÄÊý¾ÝµÄÊý×éccÁÐÌí¼ÓÒ»¸öÖµ1(´æÔÚkey)£¬»òÐÂÔöÊý×écc£¬²¢Ìí¼ÓÖµ1(²»´æÔÚkey)
**db.Test.update({},{"$push":{"dd":"a"}},false,true)

--¶ÔËùÓÐÎĵµ(±í)µÄÊý×éccÁÐÌí¼ÓÒ»¸öÖµ1(´æÔÚkey)£¬»òÐÂÔöÊý×écc£¬²¢Ìí¼ÓÖµ1(²»´æÔÚkey)

$ne ÅжÏÊÇ·ñ´æÔÚ£¬»á³öÏÖÖØ¸´Çé¿ö£¬Ìõ¼þ²»Ò»Ñù£¬Ò»ÑùµÄÖµÒ²ÄܲåÈ룺
**db.Test.update({"ee":{"$ne":"A"}},{"$push":{"ee":"A"}})

--µÚÒ»Ìõ³öÏÖÊÇ·ñ´æÔÚÊý×éeeÖÐAµÄÔªËØ£¬Öµ²»´æÔÚÔòÌí¼Ó£¨push£©A£¬ee²»´æÔÚÔòÐÂÔökey£¨ÁУ©
**db.Test.update({"ee":{"$ne":"B"}},{"$push":{"ee":"A"}})

--µÚÒ»Ìõ³öÏÖÊÇ·ñ´æÔÚÊý×éeeÖÐBµÄÔªËØ£¬Öµ²»´æÔÚÔòÌí¼Ó£¨push£©

A£¬ee²»´æÔÚÔòÐÂÔökey£¨ÁУ©£¬ºÍÉÏÃæÒ»Ìõµ¼ÖÂeeÔª×éÓÐ2¸öAÔªËØ£¬³öÏÖÖØ¸´ÔªËØ
**db.Test.update({"ee":{"$ne":"B"}},{"$push":{"ee":"A"}},true,true)

--¶ÔËùÓÐÊý¾Ý£¨µÚ4¸ö²ÎÊý£¬µÚ3¸ö²ÎÊýÎÞЧ£©£¬ÊÇ·ñ´æÔÚÊý×éeeÖÐAµÄÔªËØ£¬

Öµ²»´æÔÚÔòÌí¼Ó£¨push£©A£¬ee²»´æÔÚÔòÐÂÔökey£¨ÁУ©

$addToSet ÅжÏÊÇ·ñ´æÔÚ£¬²»»á³öÏÖÖØ¸´Çé¿ö£º
**db.Test.update({"name":"a"},{"$addToSet":{"email":"asd"}})
**db.Test.update({"age":"13"},{"$addToSet":{"email":"asd"}})

--ÒÔÉÏ2¸öÌõ¼þ¶ÔӦͬһÌõ¼Ç¼£¬µ«ÊÇͬÑùµÄֵдÈëÊý×éÖ»ÄܼǼһ´Î£¬²»»áÖØ¸´
**db.Test.update({"app":"13"},{"$addToSet":{"email":"asd"}},true)

--µÚÈý¸ö²ÎÊý£¬ÈÃÌõ¼þÖÐÕÒ²»µ½µÄ¼Ç¼µÃµ½ÐÂÔöÒ»¸ökey£¨ÁУ©
**db.Test.update({"name":"a"},{"$addToSet":{"email":"asd"}},true,true)

--µÚËĸö²ÎÊý£¬ÈÃÆ¥Åäµ½µÄ¼Ç¼¶¼µÃµ½¸üÐÂ
**db.Test.update({},{"$addToSet":{"email":"asd"}},true,true)

--¸üÐÂËùÓмǼ

$addToSet + $each ΪÊý×éÌí¼Ó¶à¸öÔªËØ£º
**db.Test.update({"name":"a"},{"$addToSet":{"xyz":{"$each":["a","b","c"]}}})

--¸üи´ºÏÌõ¼þµÄµÚÒ»Ìõ³öÏÖ
**db.Test.update({},{"$addToSet":{"add":{"$each":["a","b","c"]}}},true,true)

--¸üÐÂËùÓмǼ

$pop¡¢$pull ɾ³ýÊý×éÖеÄÔªËØ£º
λÖãº
**db.Test.update({"name":"a"},{"$pop":{"cc":1}}) --µÚÒ»Ìõ³öÏÖɾ³ýÊý×éccµÄ×îºóÒ»¸öÔªËØ
**db.Test.update({"name":"a"},{"$pop":{"cc":-1}}) --µÚÒ»Ìõ³öÏÖɾ³ýÊý×éccµÄµÚÒ»¸öÔªËØ
**db.Test.update({"name":"a"},{"$pop":{"cc":-1}},false,true)

--·ûºÏÌõ¼þµÄÈ«²¿Êý¾Ýɾ³ýÊý×éccµÄµÚÒ»¸öÔªËØ
**db.Test.update({},{"$pop":{"cc":-1}},false,true)

--È«²¿Êý¾Ýɾ³ýÊý×éccµÄµÚÒ»¸öÔªËØ
Ö¸¶¨£º
**db.Test.update({"name":"b"},{"$pull":{"cc":4}})

--µÚÒ»Ìõ³öÏÖɾ³ýÊý×éccµÄÖ¸¶¨µÄÔªËØ4
**db.Test.update({"name":"a"},{"$pull":{"cc":4}},false,true)

--·ûºÏÌõ¼þµÄÈ«²¿Êý¾Ýɾ³ýÊý×éccµÄÖ¸¶¨ÔªËØ4
**db.Test.update({},{"$pull":{"cc":4}},false,true)

--È«²¿Êý¾Ýɾ³ýÊý×éccµÄÖ¸¶¨ÔªËØ4

¶¨Î»ÐÞ¸Ä $
Óõ㣨.£©+ λÖã¨Êý×Ö£©À´±íʾÊý×éÄÚ²¿µÄkey£¬È磺
**db.Test.update({"age":14},{"$inc":{"ddd.0.a":10}})

--¸üÐÂÊý×édddµÄµÚÒ»¸öÔªËØ£¨0£©µÄa¼üµÄÖµ£¬ÐèÒªÖªµÀa¼ü£¨ÁУ©ÔÚÊý×éµÄµÚ¼¸¸öÔª×éÀï
**db.Test.update({"ddd.a":1},{"$set":{"ddd.$.d":20}})

--¸ù¾ÝÌõ¼þ£¨Êý×édddÀïa=1µÄÌõ¼þ£©£¬È¥¸üÐÂ×îÏȳöÏֵķûºÏÒªÇóµÄÊý×éµÄd¼ü£¬

²»ÐèÒªÖªµÀ±»¸üеÄkeyÔÚµÚ¼¸¸öλÖÃ
µÚÈýºÍµÚËIJÎÊýЧ¹ûºÍÉÏÃæÒ»Ñù

ÆÕͨ²éѯ£º

##select * from stu 
**db.stu.find()
Ìõ¼þ²éѯ£º
##select * from stu where sno = 8
**db.stu.find({"sno":8})
**db.stu.find({"sno":{"$in":[8]}})

##select * from stu where sno = 1 and sname ='ABC'
**db.stu.find({"sno":1,"sname":"ABC"})
in²éѯ£º
##select * from stu where sno in (1,3,5,8)
**db.stu.find({"sno":{"$in":[1,3,5,8]}})
not in ²éѯ:
##select * from stu where sno not in (1,3,5,8)
**db.stu.find({"sno":{"$nin":[1,3,5,8]}})
or ²éѯ£º
##select * from stu where sno = 5 or sname ='zhoujy'
**db.stu.find({"$or":[{"sno":5},{"sname":"zhoujy"}]})

##select * from stu where sno in (1,2,3) or sname ='zhoujy'
**db.stu.find({"$or":[{"sno":{"$in":[1,2,3]}},{"sname":"zhoujy"}]})

##select * from stu where sno = 4 and sname ='zhoujy' or sno = 1
**db.stu.find({"$or":[{"sno":4,"sname":"zhoujy"},{"sno":1}]})

##select sno,sname from stu where sno =2
**db.stu.find({"sno":2},{"sno":1,"sname":1,"_id":0})

##select count(*) from stu where sno=1
**db.stu.find({"sno":1}).count()

²»µÈÌõ¼þ²éѯ£º
$lt(<);$lte(<=);$gt(>);$gte(>=);$ne(<>)

##select * from stu where sno > 1 and sno <=5
**db.stu.find({"sno":{"$gt":1,"$lte":5}})

##select * from stu where sno > 1 and sno <=5 and sno <> 3
**db.stu.find({"sno":{"$gt":1,"$lte":5,"$ne":3}})

##select * from stu where sno > 1 and sno <=5 and sname <> 'zhoujy'
**db.stu.find({"sno":{"$gt":1,"$lte":5},"sname":{"$ne":"zhoujy"}})

È¡Óࣺ
##select sno,sname from stu where sno%5 = 1
**db.stu.find({"sno":{"$mod":[5,1]}},{"sno":1,"sname":1,"_id":0})

##select sno,sname from stu where sno%5 != 1
**db.stu.find({"sno":{"$not":{"$mod":[5,1]}}},{"sname":1,"sno":1,"_id":0})

Æ¥Åä²éѯ:
##select sno,sname from stu where sname like '%j%'
**db.stu.find({"sname":/j/},{"sno":1,"sname":1,"_id":0}) --Çø·Ö´óСд
**db.stu.find({"sname":/j/i},{"sno":1,"sname":1,"_id":0}) --²»Çø·Ö´óСд

##select sno,sname from stu where sname like 'j%'
**db.stu.find({"sname":/^j/},{"sno":1,"sname":1,"_id":0}) --Çø·Ö´óСд
**db.stu.find({"sname":/^j/i},{"sno":1,"sname":1,"_id":0}) --²»Çø·Ö´óСд

##select sno,sname from stu where sname like '%j'
**db.stu.find({"sname":/j$/},{"sno":1,"sname":1,"_id":0}) --Çø·Ö´óСд
**db.stu.find({"sname":/j$/i},{"sno":1,"sname":1,"_id":0}) --²»Çø·Ö´óСд

ÏÞÖÆ²éѯ£º
##select sno,sname from stu limit 3
**db.stu.find({},{"sno":1,"sname":1,"_id":0}).limit(3)

##select sno,sname from stu where sno > 3 limit 3
**db.stu.find({"sno":{"$gt":3}},{"sno":1,"sname":1,"_id":0}).limit(3)

##select sno,sname from stu where sno=102 limit 3
**db.stu.find({"sno":102},{"sno":1,"sname":1,"_id":0}).limit(3)

ÅÅÐò²éѯ£º
##select sno,sname from stu order by sno
**db.stu.find({},{"sno":1,"sname":1,"_id":0}).sort({"sno":1})

##select sno,sname from stu order by sno,sname
**db.stu.find({},{"sno":1,"sname":1,"_id":0}).sort({"sno":1,"sname":1})

##select sno,sname from stu order by sno,sname desc
**db.stu.find({},{"sno":1,"sname":1,"_id":0}).sort({"sno":1,"sname":-1})
##select sno,sname from stu order by sno desc
**db.stu.find({},{"sno":1,"sname":1,"_id":0}).sort({"sno":-1})

##select sno,sname from stu where sno <=3 order by sno desc
**db.stu.find({"sno":{"$lte":3}},{"sno":1,"sname":1,"_id":0}).sort({"sno":-1})

##select sno,sname from stu where sno <=10 order by sno desc limit 4
**db.stu.find({"sno":{"$lte":10}},{"sno":1,"sname":1,"_id":0}).sort({"sno":-1}).limit(4)

--limit ºÍ sort ûÓÐÏȺó˳Ðò£¬·Åǰ·Åºó½á¹ûÒ»Ñù

ÖØ¶¨Î»²éѯ£º
##select sno,sname from stu limit 4,ÎÞÇî´ó
**db.stu.find({},{"sno":1,"sname":1,"_id":0}).skip(4) --´ÓµÚ5ÐпªÊ¼µ½×îºó

##select sno,sname from stu where sno <=10 limit 4,3
**db.stu.find({"sno":{"$lte":10}},{"sno":1,"sname":1,"_id":0}).skip(4).limit(3) --´ÓµÚ5ÐпªÊ¼£¬È¡3ÐÐ

##select sno,sname from stu where sno <=10 order by sno desc limit 4,3
**db.stu.find({"sno":{"$lte":10}},{"sno":1,"sname":1,

"_id":0}).limit(3).sort({"sno":-1}).skip(4) --sort,skip,limit Õâ3¸ö²Ù×÷ûÓÐ˳Ðò£¬·ÅÄÄÀï¶¼Ò»Ñù

È¥ÖØ²éѯ£º
##select distinct a from Test
**db.Test.distinct("a")

##select distinct a from Test where a>2
**db.Test.distinct("a",{"a":{"$gt":1}})

Ëæ»úѡȡ£º
##select sno,sname from stu order by rand() limit 10
**ͨ¹ýskip(random)À´È¡µÃËæ»úÊý
> total = db.stu.count()
21
> total
21
> total = db.stu.count()
21
> random = Math.floor(Math.random()*total)
16
> random = Math.floor(Math.random()*total)
1
> random = Math.floor(Math.random()*total)
7
db.stu.find({"sno":{"$lte":10}},{"sno":1,"sname":1,"_id":0}).limit(10).sort({"sno":-1}).skip(random)

Mongodb ÌØÓУº

nullÖµ²éѯ£º
null£¬ÁгöZ¼ü£¨ÁУ©ÊÇNULL£¬²¢ÇÒÁгö²»´æÔÚZ¼ü£¨ÁУ©µÄ¼Ç¼
db.stu.find({"Z":null})

Áгö´æÔÚZ¼ü£¨ÁУ©£¬²¢ÇÒZ¼ü£¨ÁУ©ÊÇNULLµÄ¼Ç¼
db.stu.find({"Z":{"$in":[null],"$exists":true}})

Êý×é²éѯ£º
²éÕÒÒ»¸öÔªËØ
db.food.find({"fruit":"a"}) <==> db.food.find({"fruit":{"$all":["a"]}}) --²éÕÒfruitÊý×éÀï°üº¬aµÄ¼Ç¼

¶à¸öÔªËØ²éÕÒ£º$all
db.food.find({"fruit":{"$all":["a","b"]}}) --²éÕÒfruitÊý×éÀï°üº¬a,bµÄ¼Ç¼,˳Ðò²»Ó°Ïì

Ö¸¶¨Êý×éÀïµÄλÖÃ
db.food.find({"fruit.2":"c"}) --²éÕÒfruitÊý×éÀïµÚ3¸öλÖÃÊÇcµÄ¼Ç¼

Ö¸¶¨Êý×éµÄ³¤¶È
db.food.find({"fruit":{"$size":5}}) --²éÕÒfruitÊý×鳤¶ÈÊÇ5µÄ¼Ç¼

È¡Êý×éµÄǰ/ºó3¸ö×Ó¼¯
db.food.find({"fruit":"X"},{"fruit":{"$slice":3}}) --²éÕÒfruitÊý×éÀï°üº¬X¼Ç¼£¬²¢·µ»ØÊý×éµÄǰ3λ
db.food.find({"fruit":"X"},{"fruit":{"$slice":-3}}) --²éÕÒfruitÊý×éÀï°üº¬X¼Ç¼£¬²¢·µ»ØÊý×éµÄºó3λ
db.food.find({"fruit":"X"},{"fruit":{"$slice":[3,2]}}) --²éÕÒfruitÊý×éÀï°üº¬X¼Ç¼£¬²¢·µ»Ø´ÓÊý×éλ×Ó3¿ªÊ¼µÄºó2λ
db.food.find({},{"fruit":{"$slice":3}}) --²éÕÒfruitÊý×飬²¢·µ»Ø´ÓÊý×éµÄǰ3λ
db.food.find({"fruit":{"$exists":true}},{"fruit":{"$slice":-1}}) --²éÕÒfruitÊý×é´æÔÚ£¬²¢·µ»ØÊý×éµÄ×îºóһλ

Îĵµ²éѯ£º
Ö¸¶¨ÄÚǶÎĵµÀïµÄ¼ü£ºµãÁ¬½Ó
db.post.find({"xx.age":12}) --²éÕÒÄÚǶÎĵµxx£¬ÕÒ³öageÊÇ12µÄ¼Ç¼
db.post.find({"xx.age":12,"xx.add":"hz","xx.sex":1}) --²éÕÒÄÚǶÎĵµxx£¬ÕÒ³öageÊÇ12£¬addÊÇhz£¬sexÊÇ1µÄ¼Ç¼
db.post.find({"xx.add":"hz","xx.age":{"$gt":12}}) --²éÕÒÄÚǶÎĵµxx£¬ÕÒ³öaddÊÇhz£¬age > 12 µÄ¼Ç¼,$elemMatch

ÁгöÈ«²¿ÄÚÈÝ£ºÈç¹û¼üÔö¼Ó£¬»ò˳Ðò²»Ò»Ñù£¬Ôò²é²»³öÀ´
db.post.find({"xx":{"sex":1,"add":"hz","age":12}}) --²éÕÒÄÚǶÎĵµxx£¬ÍêȫƥÅä

$where ²éѯ:
ÆÕͨÁУº
##×¢Òâ¸ñʽ£¬²éÕÒ³ö2¸ö¼üµÄÖµÏàµÈµÄÎĵµ:{"D" : 4, "E" : 4, "F" : 5 }£¬D£¬EÏàµÈ
db.foo.find({"$where":function(){ ##¹Ì¶¨¸ñʽ
for (var numA in this){ ##¸³Öµ¸ÃÎĵµµÄkey¸øÒ»¸ö±äÁ¿£¬this ±íʾ¸ÃÎĵµ
for (var numB in this){ ##¸³Öµ¸ÃÎĵµµÄkey¸øÒ»¸ö±äÁ¿
if (numA != numB && this[numA] == this[numB]) ##Åжϣ¬key²»ÏàµÈµ«ËûÃǵÄÖµÏàµÈ£¬¼´DºÍD²»ÄܱÈ
return true; ##·µ»Ø
}
}
}
})

##×¢Òâ¸ñʽ,²éÕÒ³öÖÁÉÙ2¸öÖµ´óÓÚ5µÄÎĵµ
db.foo.find({"$where":function(){ ##¹Ì¶¨¸ñʽ
var cnt = 0; ##ÉùÃ÷±äÁ¿
for (var num in this){ ##¸³Öµ¸ÃÎĵµµÄkey¸øÒ»¸ö±äÁ¿£¬this ±íʾ¸ÃÎĵµ
if (this[num] >=5) ##Åжϣ¬Èç¹ûÖµ´óÓÚ5£¬Ôò...
cnt++;
}
return cnt >=2; ##µ±cnt>=2£¬·µ»Ø
}
})

ÄÚǶÎĵµ£º
##×¢Òâ¸ñʽ£¬²éÕÒ³öÖÁÉÙ2¸öÖµ´óÓÚ90µÄÎĵµ
db.stu.find({"$where":function(){
var cnt = 0;
for (var num in this.course){
if( this.course[num] > 90)
cnt++;
}
return cnt >=2;
}
})

##×¢Òâ¸ñʽ£¬²éÕÒ³ö2¸ö¼üµÄÖµÏàµÈµÄÎĵµ
db.stu.find({"$where":function(){
for (var t1 in this.course){
for (var t2 in this.course){
if(t1 != t2 && this.course[t1]==this.course[t2])
return true;
}
}
}
})

·µ»ØÒѾ­¸üеÄÎĵµ:getLastError¡¢findAndModify

> db.runCommand({getLastError:1}) --¿ªÆô
{
"updatedExisting" : true,
"n" : 1, --Ð޸ĵÄÐÐÊý
"connectionId" : 1,
"err" : null,
"ok" : 1
}
##Ö»·µ»Ø±»¸Ä¶¯µÄ¼Ç¼
> db.Test.findAndModify({
... "query":{"name":"b"}, --Ìõ¼þ
... "update":{"name":"BB"}, --¸üÐÂ
... "new":true --·µ»ØÐ޸ĺóµÄÊý¾Ý
... })

> db.Test.findAndModify({
... "query":{"name":"b"},
... "update":{"name":"BB"},
... "new":false --·µ»ØÐÞ¸ÄǰµÄÊý¾Ý
... })

¾ÛºÏº¯Êý²Ù×÷£º{count,sum,max,min,avg}¿ÉÒÔͨ¹ý£ºgroup¡¢mapreduce¡¢aggregateÍê³É¡£ËûÃǵľßÌåʹÓ÷½·¨Îª£º¾ßÌå˵Ã÷¼û£º

group£º
db.collection.group(
key,
reduce,
initial,
keyf,
cond,
finalize)

mapReduce:
db.collection.mapReduce(
<mapfunction>,
<reducefunction>,
{
out: <collection>,
query: <document>,
sort: <document>,
limit: <number>,
finalize: <function>,
scope: <document>,
jsMode: <boolean>,
verbose: <boolean>
}
)

aggregate:
ʹÓ÷½·¨¼û£ºhttp://blog.nosqlfan.com/html/3648.html
{ aggregate: "[collection]", pipeline: [pipeline] }
Pipeline ¶¨ÒåµÄ²Ù×÷ÓÐ:
$match ¨C query predicate as a filter.
$project ¨C use a sample document todetermine the shape of the result.
$unwind ¨C hands out array elements oneat a time.
$group ¨C aggregates items into bucketsdefined by a key.
$sort ¨C sort document.
$limit ¨C allow the specified number ofdocuments to pass
$skip ¨C skip over the specified numberof documents.

²âÊÔÊý¾Ý£º

##select dept,count(*) from test_gh group by dept

**db.test_gh.group({
'key':{"dept":1}, /* group by dept */
'reduce':function(obj,prev){
prev.ccount ++ /* count(*) */
},
'initial':{"ccount":0} /*³õʼ»¯±äÁ¿*/
})
[ { "dept" : 111, "ccount" : 4 }, { "dept" : 222, "ccount" : 2 } ]

##select dept,sum(age) from test_gh group by dept

**db.test_gh.group({
"key":{"dept":1},
"reduce":function(obj,prev){
prev.ssum += obj.age /*obj±íʾ¼¯ºÏ£¨±í£©ÀïµÄÎĵµ£¨ÐУ©*/
},
"initial":{"ssum":0}
})
[ { "dept" : 111, "ssum" : 54 }, { "dept" : 222, "ssum" : 27 } ]

##select dept,max(age) from test_gh group by dept;

**db.test_gh.group({
"key":{"dept":1},
"reduce":function(obj,prev){
if (obj.age > prev.age){ /*¼ÆËã³ö×î´óÖµ*/
prev.age = obj.age
}
},
"initial":{"age":0} /*³õʼ»¯Ò»¸ö±äÁ¿*/
})
[ { "dept" : 111, "age" : 16 }, { "dept" : 222, "age" : 14 } ]

##select dept,min(age) from test_gh group by dept

**db.test_gh.group({
"key":{"dept":1},
"reduce":function(obj,prev){
if(obj.age < prev.age){ /*¼ÆËã³ö×îСֵ*/
prev.age=obj.age}
},
"initial":{"age":9999999} /*³õʼ»¯Ò»¸ö±äÁ¿,¸ø³öÒ»¸ö´óÓÚ×î´óµÄÊý*/
})
[ { "dept" : 111, "age" : 11 }, { "dept" : 222, "age" : 13 } ]


mapreduce·½·¨Ò²¿ÉÒÔʵÏÖ,2.1Ö®ºó³öÏÖÒ»¸öеľۺÏÓõĺ¯Êý£ºaggregate

ʹÓÃaggregate£¬¾ßÌå˵Ã÷¼û:http://my.oschina.net/GivingOnenessDestiny/blog/88006
×ÜÆ½¾ù
##select avg(age) from test_gh
**db.test_gh.aggregate({"$group":{_id:null,Avg:{"$avg":"$age"}}}).result[0].

Avg /*_idÊÇÒ»¸öÐèÒª±»groupµÄkey£¬null±íʾûÓÐgroup£¬ÀïÃæµÄ¶¼´ø ¡°¡ç¡±¡¡*/
13.5

²¿ÃÅÆ½¾ù
##select avg(age) from test_gh group by dept
**db.test_gh.aggregate({"$group":{_id:"$dept",Avg:{"$avg":"$age"}}})

.result/*_idÊÇÒ»¸öÐèÒª±»groupµÄkey£¬$dept±íʾûÓÐgroup dept£¬ÀïÃæµÄ¶¼´ø ¡°¡ç¡±¡¡*/
[ { "_id" : 222, "Avg" : 13.5 }, { "_id" : 111, "Avg" : 13.5 } ]


##select dept,avg(age) from test_gh where name <'e' group by dept
$match Ï൱ÓëÒ»¸öqueryÌõ¼þ
**db.test_gh.aggregate({"$match":{"name":{"$lt":"e"}}},{"$group":{_id:"$dept",Avg:{"$avg":"$age"}}})

²¿Ãŵį½¾ùage´óÓÚ×ܵį½¾ùage
db.test_gh.aggregate([
{$group :{_id:"$dept",Avg:{"$avg":"$age"}}}, /*²¿Ãŵį½¾ù*/
{$match :{Avg:{"$gt": /*±È½Ï*/
db.test_gh.aggregate({
$group :{_id:null,totalAvg:{"$avg":"$age"}}}).result[0].totalAvg /*×ܵį½¾ù,Ò»¸öaggregate*/
}}}
]).result
[ { "_id" : 111, "Avg" : 13.8 } ]

aggregate ʵÏÖÆäËûµÄ¾ÛºÏ£º
±ÈÈç×î´ó×îС£º
> db.test_gh.aggregate({$group:{_id:"$dept",Avg:{"$min":"$age"}}}).result
[ { "_id" : 222, "Avg" : 13 }, { "_id" : 111, "Avg" : 11 } ]
> db.test_gh.aggregate({$group:{_id:"$dept",Avg:{"$max":"$age"}}}).result
[ { "_id" : 222, "Avg" : 14 }, { "_id" : 111, "Avg" : 16 } ]

   
2368 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

MySQLË÷Òý±³ºóµÄÊý¾Ý½á¹¹
MySQLÐÔÄܵ÷ÓÅÓë¼Ü¹¹Éè¼Æ
SQL ServerÊý¾Ý¿â±¸·ÝÓë»Ö¸´
ÈÃÊý¾Ý¿â·ÉÆðÀ´ 10´óDB2ÓÅ»¯
oracleµÄÁÙʱ±í¿Õ¼äдÂú´ÅÅÌ
Êý¾Ý¿âµÄ¿çƽ̨Éè¼Æ

²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿â
¸ß¼¶Êý¾Ý¿â¼Ü¹¹Éè¼ÆÊ¦
HadoopÔ­ÀíÓëʵ¼ù
Oracle Êý¾Ý²Ö¿â
Êý¾Ý²Ö¿âºÍÊý¾ÝÍÚ¾ò
OracleÊý¾Ý¿â¿ª·¢Óë¹ÜÀí

GE Çø¿éÁ´¼¼ÊõÓëʵÏÖÅàѵ
º½Ìì¿Æ¹¤Ä³×Ó¹«Ë¾ Nodejs¸ß¼¶Ó¦Óÿª·¢
ÖÐÊ¢Òæ»ª ׿Խ¹ÜÀíÕß±ØÐë¾ß±¸µÄÎåÏîÄÜÁ¦
ijÐÅÏ¢¼¼Êõ¹«Ë¾ PythonÅàѵ
ij²©²ÊITϵͳ³§ÉÌ Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À
ÖйúÓÊ´¢ÒøÐÐ ²âÊÔ³ÉÊì¶ÈÄ£Ðͼ¯³É(TMMI)
ÖÐÎïÔº ²úÆ·¾­ÀíÓë²úÆ·¹ÜÀí