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 |
¢Û ×îºóÔÙ¸üÐÂÏÂÊý¾ÝÔ´£º
¢Ü °²×°:
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 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 } ]
|
|