
本文共 43961 字,大约阅读时间需要 146 分钟。
MongoDB���������������������������������������������������������������
1������������MongoDB������������������������document-oriented������������������������������������������������ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������row������������������������������������������������������������document������������ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������predefined schema���������������������key������������value������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
2���������������
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������T������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������MongoDB���������������������������������������������������������������������������������������������������������������������������MongoDB���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������MongoDB���������������������������������������������������
3������������������
MongoDB���������������������������������������������������������������������������������������������������������������������������������������������#1���������������������������������������������������������������������������������������������������������������������������������������#2������������������������������������������������������������������������������������������������������������������#3������������������������������������������������������������������������������������������������������������������������session���������������MongoDB���������������������������������������������������������������������#4���������������������������������������������������������������������������������������������MongoDB������������������������������������������������������������������������join���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
4������������������
MongoDB���������������������������������������������������������������������������MongoDB������������MongoDB������������������������������������cache������������������������������������������������������������������������������������������������������������������MongoDB������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������MongoDB������������������������������������������
��� MongoDB������������
1������������MongoDB���������������������������������������������������������{'msg':'hello','foo':3}������������python���������������������
���������������������#1������������������/���������������������#2���������������������������������������������������������������������������������������������������������������������������������������������)���#3���MongoDB���������������������������#4���MongoDB���������������������������������#5������������������������������������������������������������������������������������������������������������������������������������������������������������������������������UTF-8���������������������������������#1������������������\0 (���������)������������������������������������������#2���.���$������������������������������������������������������������#3���������������"_"������������������������(���������������������)���
2���������������������������������������MongoDB������������������������������������������������������������������������������������������������
#1������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#2������������������������������������������.������������������������������������������������������������������������������������������������������������������������blog.posts���blog.authors���������������������������������������������������blog���������������������������������������������������������������������������������������������MongoDB���������������������������������������������������������������#3������������������������������������������������������������������������������������������������������������""������������������������\0������������������)������������������������������������������������������������"system."���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������$���
3������������������MongoDB������������������������������������������������������������������
������������������������������������������������������������������������������������UTF-8������������#1���������������������������"")���#2���������������' '���������)���.���$���/���\���\0 (���������)���#3���������������������#4���������64���������������������������������������������������������������������������������������������������#1���admin��� ���������������������������������������root���������������������������������������������admin������������������������������������������������������������������������������������������������������������������������admin������������������������������������������������������������#2���local: ������������������������������������������������������������������������������������������������������������������������#3���config: MongoDB������������������������������������������������config������������
4���������������������������������������������������������������������������������������������������
��������� ���������������cms���������������blog.posts������������������������������������������cmd.blog.posts������������������������������������121���������������������������������������������100���������
��� ������
1���������
#1������������������D:\MongoDB������D:\MongoDB\bin������������������������#2������������������������D:\MongoDB\data\dbD:\MongoDB\log\mongod.log#3���������������������mongod.cfg,���������https://docs.mongodb.com/manual/reference/configuration-options/systemLog: destination: file path: "D:\MongoDB\log\mongod.log" logAppend: truestorage: journal: enabled: true dbPath: "D:\MongoDB\data\db"net: bindIp: 0.0.0.0 port: 27017setParameter: enableLocalhostAuthBypass: false #4���������������������mongod --config "D:\MongoDB\mongod.cfg" --bind_ip 0.0.0.0 --install������������������������������������mongod --bind_ip 0.0.0.0 --port 27017 --logpath D:\MongoDB\log\mongod.log --logappend --dbpath D:\MongoDB\data\db --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install#5���������\������net start MongoDBnet stop MongoDB#6���������mongo���������http://www.runoob.com/mongodb/mongodb-window-install.html
2���������������
#���������������https://docs.mongodb.com/master/tutorial/enable-authentication/#1���������������use admindb.createUser( { user: "root", pwd: "123", roles: [ { role: "root", db: "admin" } ] })use testdb.createUser( { user: "egon", pwd: "123", roles: [ { role: "readWrite", db: "test" }, { role: "read", db: "db1" } ] })#2������������������mongod --removemongod --config "C:\mongodb\mongod.cfg" --bind_ip 0.0.0.0 --install --auth#3������������������������������������������������mongo --port 27017 -u "root" -p "123" --authenticationDatabase "admin"���������������������������db.auth("������","������")������mongouse admindb.auth("root","123")#������������:https://www.cnblogs.com/zhoujinyi/p/4610050.html
3������������shell
#1���mongo 127.0.0.1:27017/config #������������������������config#2���mongo --nodb #���������������������������#3������������������������������������new Mongo(hostname)���������������������������������mongod������> conn=new Mongo('127.0.0.1:27017')connection to 127.0.0.1:27017> db=conn.getDB('admin')admin#4���help������������#5���mongo������������������JavaScript shell������������������JavaScript���������
��� ������������������
1������������������MongoDB������������Javascript������������������������������������������������JSON���JSON���http://www.json.org���������������������������������������������������������������������������������������������������������������������������������������������������������
2���������������������������������������������������������������������������������������������������������������null������������������������������������������������������������������������������JSON������������������������������������
3���������JSON���������������������������������������������������������������������������������������������������������������������������������������������������������������������JSON������������������������������������������������������������������������������JSON������������������������������������������������������������������������32������64���������������JSON���������������������������������������������������������������������
4���MongoDB������������JSON���������/���������������������������������������������������������������������������������������������������������������������������������������������������������MongoDB���������������������������������������������������������������������
#1���null���������������������������������������d={'x':null}#2���������������true���falsed={'x':true,'y':false}#3���������d={'x':3,'y':3.1415926}#4������������d={'x':'egon'}#5���������d={'x':new Date()}d.x.getHours()#6������������������d={'pattern':/^egon.*?nb$/i}���������������������������������i������:i ���������������m ������������������x ������������������������������s ������������������#7���������d={'x':[1,'a','v']}#8���������������user={'name':'egon','addr':{'country':'China','city':'YT'}}user.addr.country#9���������id:���������12���������ID,������������������������������������d={'x':ObjectId()}
5���_id���ObjectId
MongoDB���������������������������������"_id"���������������������������������������������������������ObjectId������������������������������������������������������������_id���,���������������������������������������������������������������"_id"���������������������������������������"_id"������������������#1���ObjectIdObjectId���"_id"������������������������������MongoDb���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������MongoDB������ObjectId������������ObjectId������12������������������������������������24��������������������������������������� 0|1|2|3| 4|5|6| 7|8 9|10|11 ��������� ������ PID ���������������������������������ObjectId���������������������������������������������������������������������������������������������������������������������������������������������ObjectId���������������������������������������������������������������������5������������������������������������������������������������4������������������������������������������������������������������������������������������������������ObjectId������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������3������������������������������������������������������������������������������������������������������������������������������������ObjectId���������������������������������������������������������������������������������������������������ObjectId���������������9���������������������������������������������������������������ObjectId���������������������3��������������������������������� ���������������������������������������������������ObjectId���������������������#2���������������_id���������������������������"_id"������������������������������ ������������������MongoDb������������������������������������������������������������������������������������������������������������MongoDb���������������������������������������������������������������������������������������������������������������������������������������MongoDB������������������������������������������������������������������������������������������������������������������������������������������������������������������
��� CRUD������
1������������������
#1������use config #���������������������������������������������������������������������������������#2������show dbs #������������������������������������������������������config��������������������������������� ������������������������������config������������������������������db.table1.insert({'a':1})#3������use config #���������������������������db.dropDatabase() #���������������
2���������������
#1���������������������������������������������������������> use database1switched to db database1> db.table1.insert({'a':1})WriteResult({ "nInserted" : 1 })> db.table2.insert({'b':2})WriteResult({ "nInserted" : 1 })#2������> show tablestable1table2#3������> db.table1.drop()true> show tablestable2
3���������������
���
#1���������������_id���������ObjectId,_id���������������������������������������#2���������������user0={ "name":"egon", "age":10, 'hobbies':['music','read','dancing'], 'addr':{ 'country':'China', 'city':'BJ' }}db.test.insert(user0)db.test.find()#3���������������user1={ "_id":1, "name":"alex", "age":10, 'hobbies':['music','read','dancing'], 'addr':{ 'country':'China', 'city':'weifang' }}user2={ "_id":2, "name":"wupeiqi", "age":20, 'hobbies':['music','read','run'], 'addr':{ 'country':'China', 'city':'hebei' }}user3={ "_id":3, "name":"yuanhao", "age":30, 'hobbies':['music','drink'], 'addr':{ 'country':'China', 'city':'heibei' }}user4={ "_id":4, "name":"jingliyang", "age":40, 'hobbies':['music','read','dancing','tea'], 'addr':{ 'country':'China', 'city':'BJ' }}user5={ "_id":5, "name":"jinxin", "age":50, 'hobbies':['music','read',], 'addr':{ 'country':'China', 'city':'henan' }}db.user.insertMany([user1,user2,user3,user4,user5])
���
# SQL���=,!=,>,<,>=,<=# MongoDB���{key:value}������������������������,"$ne","$gt","$lt","gte","lte",������"$ne"���������������������������#1���select * from db1.user where name = "alex";db.user.find({'name':'alex'})#2���select * from db1.user where name != "alex";db.user.find({'name':{"$ne":'alex'}})#3���select * from db1.user where id > 2;db.user.find({'_id':{'$gt':2}})#4���select * from db1.user where id < 3;db.user.find({'_id':{'$lt':3}})#5���select * from db1.user where id >= 2;db.user.find({"_id":{"$gte":2,}})#6���select * from db1.user where id <= 2;db.user.find({"_id":{"$lte":2}})
# SQL���and���or���not# MongoDB������������������������������������������and���������"$or"���������������[]���,"$not"#1���select * from db1.user where id >= 2 and id < 4;db.user.find({'_id':{"$gte":2,"$lt":4}})#2���select * from db1.user where id >= 2 and age < 40;db.user.find({"_id":{"$gte":2},"age":{"$lt":40}})#3���select * from db1.user where id >= 5 or name = "alex";db.user.find({ "$or":[ {'_id':{"$gte":5}}, {"name":"alex"} ]})#4���select * from db1.user where id % 2=1;db.user.find({'_id':{"$mod":[2,1]}})#5������������������db.user.find({'_id':{"$not":{"$mod":[2,1]}}})
# SQL���in���not in# MongoDB���"$in","$nin"#1���select * from db1.user where age in (20,30,31);db.user.find({"age":{"$in":[20,30,31]}})#2���select * from db1.user where name not in ('alex','yuanhao');db.user.find({"name":{"$nin":['alex','yuanhao']}})
# SQL: regexp ������# MongoDB: /������������/i#1���select * from db1.user where name regexp '^j.*?(g|n)$';db.user.find({'name':/^j.*?(g|n)$/i})
#1���select name,age from db1.user where id=3;db.user.find({'_id':3},{'_id':0,'name':1,'age':1})
#1������������dancing������������db.user.find({'hobbies':'dancing'})#2���������������dancing������������tea������������db.user.find({ 'hobbies':{ "$all":['dancing','tea'] }})#3������������4������������tea������db.user.find({"hobbies.3":'tea'})#4������������������������������������db.user.find({},{'hobbies':{"$slice":-2},"age":0,"_id":0,"name":0,"addr":0})#5������������������������2���������3���������db.user.find({},{'hobbies':{"$slice":[1,2]},"age":0,"_id":0,"name":0,"addr":0})> db.blog.find().pretty(){ "_id" : 1, "name" : "alex���������������������", "comments" : [ { "name" : "egon", "content" : "alex���������������", "thumb" : 200 }, { "name" : "wxx", "content" : "���������������������", "thumb" : 300 }, { "name" : "yxx", "content" : "���������������������������������", "thumb" : 40 }, { "name" : "egon", "content" : "xxx", "thumb" : 0 } ]}db.blog.find({},{'comments':{"$slice":-2}}).pretty() #������������������db.blog.find({},{'comments':{"$slice":[1,2]}}).pretty() #������1���2
# ������:--1���������������-1������������db.user.find().sort({"name":1,})db.user.find().sort({"age":-1,'_id':1})
# ������:--limit������������������document���skip������������������������document��� db.user.find().sort({'age':1}).limit(1).skip(2)
# ������������db.user.count({'age':{"$gt":30}}) --������db.user.find({'age':{"$gt":30}}).count()
#1���{'key':null} ������key���������null������������������keydb.t2.insert({'a':10,'b':111})db.t2.insert({'a':20})db.t2.insert({'b':null})> db.t2.find({"b":null}){ "_id" : ObjectId("5a5cc2a7c1b4645aad959e5a"), "a" : 20 }{ "_id" : ObjectId("5a5cc2a8c1b4645aad959e5b"), "b" : null }#2���������������db.user.find() #���������db.user.find({})db.user.find().pretty()#3���������������������find���������������������������������������������������db.user.findOne({"_id":{"$gt":3}})
help��������� ��� use db1 #��������������������������� ��� show dbs #������������ db #������ ��� db.dropDatabase()��������� ���: db.user db.user.info db.user.auth ������ show collections show tables ��� db.user.info.drop()��������� ��� db.user.insert({"_id":1,"name":"egon"}) user0={ "name":"egon", "age":10, 'hobbies':['music','read','dancing'], 'addr':{ 'country':'China', 'city':'BJ' } } db.user.insert(user0) db.user.insertMany([user1,user2,user3,user4,user5]) db.t1.insert({"_id":1,"a":1,"b":2,"c":3}) #������������_id������������������������_id������������������������_id db.t1.save({"_id":1,"z":6}) db.t1.save({"_id":2,"z":6}) db.t1.save({"z":6}) ������������������=���!=,>,<,>=,<=#1���select * from db1.user where id = 3db.user.find({"_id":3})#2���select * from db1.user where id != 3db.user.find({"_id":{"$ne":3}})#3���select * from db1.user where id > 3db.user.find({"_id":{"$gt":3}})#4���select * from db1.user where age < 3db.user.find({"age":{"$lt":3}})#5���select * from db1.user where id >= 3db.user.find({"_id":{"$gte":3}})#6���select * from db1.user where id <= 3db.user.find({"_id":{"$lte":3}})#������������:$and,$or,$not#1 select * from db1.user where id >=3 and id <=4;db.user.find({"_id":{"$gte":3,"$lte":4}})#2 select * from db1.user where id >=3 and id <=4 and age >=40;db.user.find({ "_id":{"$gte":3,"$lte":4}, "age":{"$gte":40}})db.user.find({"$and":[{"_id":{"$gte":3,"$lte":4}},{"age":{"$gte":40}}]})#3 select * from db1.user where id >=0 and id <=1 or id >=4 or name = "yuanhao";db.user.find({"$or":[{"_id":{"$lte":1,"$gte":0}},{"_id":{"$gte":4}},{"name":"yuanhao"}]})#4 select * from db1.user where id % 2 = 1;db.user.find({"_id":{"$mod":[2,1]}})db.user.find({ "_id":{"$not":{"$mod":[2,1]}}})#������������:$in,$nindb.user.find({"name":{"$in":["alex","egon"]}})db.user.find({"name":{"$nin":["alex","egon"]}})#������������select * from db1.user where name regexp "^jin.*?(g|n)$";db.user.find({ "name":/^jin.*?(g|n)$/i})#������������������select name,age from db1.user where name regexp "^jin.*?(g|n)$";db.user.find({ "name":/^jin.*?(g|n)$/i},{ "_id":0, "name":1, "age":1})#������������������db.user.find({ "hobbies":"dancing"})db.user.find({ "hobbies":{"$all":["dancing","tea"]}})db.user.find({ "hobbies.2":"dancing"})db.user.find({},{ "_id":0, "name":0, "age":0, "addr":0, "hobbies":{"$slice":[1,2]},})db.user.find({},{ "_id":0, "name":0, "age":0, "addr":0, "hobbies":{"$slice":2},})db.user.find({ "addr.country":"China"})db.user.find().sort({"_id":1,"age":-1})db.user.find().limit(2).skip(0)db.user.find().limit(2).skip(2)db.user.find().limit(2).skip(4)db.user.find().distinct()
���
update() ������������������������������������������������������������db.collection.update(, , { upsert: , multi: , writeConcern: })���������������������update db1.t1 set name='EGON',sex='Male' where name='egon' and age=18;query : ���������where���������update : update������������������������������������������$,$inc...���������������set���������upsert : ������������������false������������������������update������������������������������������������true���������������multi : ������������������false���������������������������������������������������true,������������������������������������writeConcern :���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
#���������������������������������_id���������������������#1������������:db.user.update({'age':20},{"name":"Wxx","hobbies_count":3})������{"_id":2,"name":"Wxx","hobbies_count":3}���������������������#2������������������������������������������������������������������������������������������������������������������������������������var obj=db.user.findOne({"_id":2})obj.username=obj.name+'SB'obj.hobbies_count++delete obj.agedb.user.update({"_id":2},obj)
#���������$set������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#1���update db1.user set name="WXX" where id = 2db.user.update({'_id':2},{"$set":{"name":"WXX",}})#2������������������������������������{"upsert":true}db.user.update({'_id':6},{"$set":{"name":"egon","age":18}},{"upsert":true})#3���������������������������������������,{"multi":���������}db.user.update({'_id':{"$gt":4}},{"$set":{"age":28}})db.user.update({'_id':{"$gt":4}},{"$set":{"age":38}},{"multi":true})#4������������������������������������alex���������������������������������Japandb.user.update({'name':"alex"},{"$set":{"addr.country":"Japan"}})#5���������������alex������������2���������������piaodb.user.update({'name':"alex"},{"$set":{"hobbies.1":"piao"}})#6���������alex���������,$unsetdb.user.update({'name':"alex"},{"$unset":{"hobbies":""}})
#������������������$inc#1������������������������������db.user.update({}, { "$inc":{"age":1} }, { "multi":true } )#2������������������������5���db.user.update({}, { "$inc":{"age":-5} }, { "multi":true } )
#��������������������������� ������������������������:$push#1���������������yuanhao������������������������readdb.user.update({"name":"yuanhao"},{"$push":{"hobbies":"read"}})#2���������������yuanhao������������������������������tea���dancingdb.user.update({"name":"yuanhao"},{"$push":{ "hobbies":{"$each":["tea","dancing"]}}})������������������������������������������������������$pop#3���{"$pop":{"key":1}} ���������������������������������db.user.update({"name":"yuanhao"},{"$pop":{ "hobbies":1}})#4���{"$pop":{"key":-1}} ���������������db.user.update({"name":"yuanhao"},{"$pop":{ "hobbies":-1}})#5���������������������������,���"$pull" ������������������������������������$pop������������������db.user.update({'addr.country':"China"},{"$pull":{ "hobbies":"read"}},{ "multi":true})
#���������������������"$addToSet"db.urls.insert({"_id":1,"urls":[]})db.urls.update({"_id":1},{"$addToSet":{"urls":'http://www.baidu.com'}})db.urls.update({"_id":1},{"$addToSet":{"urls":'http://www.baidu.com'}})db.urls.update({"_id":1},{"$addToSet":{"urls":'http://www.baidu.com'}})db.urls.update({"_id":1},{ "$addToSet":{ "urls":{ "$each":[ 'http://www.baidu.com', 'http://www.baidu.com', 'http://www.xxxx.com' ] } } })
#1������������������������"$slice"���������������n���db.user.update({"_id":5},{ "$push":{"hobbies":{ "$each":["read",'music','dancing'], "$slice":-2 } }})#2������������������The $sort element value must be either 1 or -1"db.user.update({"_id":5},{ "$push":{"hobbies":{ "$each":["read",'music','dancing'], "$slice":-1, "$sort":-1 } }})#���������������������"$slice"������"$sort"���"$push"������������������������������"$eah"
���
#1������������������������������db.user.deleteOne({ 'age': 8 })#2������������������China���������db.user.deleteMany( {'addr.country': 'China'} ) #3���������������db.user.deleteMany({})
4���������
���������������������������MongoDB������������������������������������������������������������������������������������������������������������������������������������MongoDB������������������������������#1���������������#2���MapReduce(������MongoDB������������)#3������������������������������count���distinct���group���(������MongoDB������������)#���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������($match)���������($project)���������($group)���������($sort)���������($limit)���������($skip)���������������������������������������������������������
from pymongo import MongoClientimport datetimeclient=MongoClient('mongodb://root:123@localhost:27017')table=client['db1']['emp']# table.drop()l=[('egon','male',18,'20170301','���������������������������������������',7300.33,401,1), #������������������('alex','male',78,'20150302','teacher',1000000.31,401,1),('wupeiqi','male',81,'20130305','teacher',8300,401,1),('yuanhao','male',73,'20140701','teacher',3500,401,1),('liwenzhou','male',28,'20121101','teacher',2100,401,1),('jingliyang','female',18,'20110211','teacher',9000,401,1),('jinxin','male',18,'19000301','teacher',30000,401,1),('������','male',48,'20101111','teacher',10000,401,1),('������','female',48,'20150311','sale',3000.13,402,2),#���������������������('������','female',38,'20101101','sale',2000.35,402,2),('������','female',18,'20110312','sale',1000.37,402,2),('������','female',18,'20160513','sale',3000.29,402,2),('������','female',28,'20170127','sale',4000.33,402,2),('������','male',28,'20160311','operation',10000.13,403,3), #���������������������('���������','male',18,'19970312','operation',20000,403,3),('���������','female',18,'20130311','operation',19000,403,3),('���������','male',18,'20150411','operation',18000,403,3),('���������','female',18,'20140512','operation',17000,403,3)]for n,item in enumerate(l): d={ "_id":n, 'name':item[0], 'sex':item[1], 'age':item[2], 'hire_date':datetime.datetime.strptime(item[3],'%Y%m%d'), 'post':item[4], 'salary':item[5] } table.save(d)
{"$match":{"������":"������"}},���������������������������������������$gt,$lt,$in���#���1���select * from db1.emp where post='teacher';db.emp.aggregate({"$match":{"post":"teacher"}})#���2���select * from db1.emp where id > 3 group by post; db.emp.aggregate( {"$match":{"_id":{"$gt":3}}}, {"$group":{"_id":"$post",'avg_salary':{"$avg":"$salary"}}})#���3���select * from db1.emp where id > 3 group by post having avg(salary) > 10000; db.emp.aggregate( {"$match":{"_id":{"$gt":3}}}, {"$group":{"_id":"$post",'avg_salary':{"$avg":"$salary"}}}, {"$match":{"avg_salary":{"$gt":10000}}})
{"$project":{"���������������������":1,"���������������������":0,"������������������":"���������"}}#1���select name,post,(age+1) as new_age from db1.emp;db.emp.aggregate( {"$project":{ "name":1, "post":1, "new_age":{"$add":["$age",1]} }})#2������������������������������{"$add":[expr1,expr2,...,exprN]} #������{"$subtract":[expr1,expr2]} #���������������������{"$multiply":[expr1,expr2,...,exprN]} #������{"$divide":[expr1,expr2]} #������������������������������������������������������������{"$mod":[expr1,expr2]} #���������������������������������������������������������������������#3������������������������������:$year,$month,$week,$dayOfMonth,$dayOfWeek,$dayOfYear,$hour,$minute,$second#���������select name,date_format("%Y") as hire_year from db1.empdb.emp.aggregate( {"$project":{"name":1,"hire_year":{"$year":"$hire_date"}}})#���������������������������������������������db.emp.aggregate( {"$project":{"name":1,"hire_period":{ "$subtract":[ {"$year":new Date()}, {"$year":"$hire_date"} ] }}})#4���������������������{"$substr":[���������/$���������������������������,������������,������������������]}{"$concat":[expr1,expr2,...,exprN]} #���������������������������������������������������,������������������������{"$toLower":expr}{"$toUpper":expr}db.emp.aggregate( {"$project":{"NAME":{"$toUpper":"$name"}}})#5������������������$and$or$not���������Mongodb������������
{"$group":{"_id":������������,"���������������":���������������}}#1������������������������$group���������_id������������{"$group":{"_id":"$sex"}} #������������������{"$group":{"_id":"$post"}} #������������������{"$group":{"_id":{"state":"$state","city":"$city"}}} #���������������������������������������������������#2���������������������������,���������sql������������������������������������$sum���$avg���$max���$min���$first���$last#���1���select post,max(salary) from db1.emp group by post; db.emp.aggregate({"$group":{"_id":"$post","max_salary":{"$max":"$salary"}}})#���2���������������������������������������������db.emp.aggregate({"$group":{"_id":"$post","max_salary":{"$max":"$salary"},"min_salary":{"$min":"$salary"}}})#���3���������������������������������������$first,$last������������,������$max���$min���������db.emp.aggregate({"$group":{"_id":"$post","first_id":{"$first":"$_id"}}})#���4������������������������������db.emp.aggregate({"$group":{"_id":"$post","count":{"$sum":"$salary"}}})#���5���������������������������db.emp.aggregate({"$group":{"_id":"$post","count":{"$sum":1}}})#3������������������{"$addToSet":expr}������������{"$push":expr}���������#������������������������������������������������������:select post,group_concat(name) from db1.emp group by post;db.emp.aggregate({"$group":{"_id":"$post","names":{"$push":"$name"}}})db.emp.aggregate({"$group":{"_id":"$post","names":{"$addToSet":"$name"}}})
{"$sort":{"���������":1,"���������":-1}} #1���������-1������{"$limit":n} {"$skip":n} #���������������������#���1������������������������������������������db.emp.aggregate({ "$group":{"_id":"$post","������������":{"$avg":"$salary"}}},{ "$sort":{"������������":-1}},{ "$limit":2})#���2���db.emp.aggregate({ "$group":{"_id":"$post","������������":{"$avg":"$salary"}}},{ "$sort":{"������������":-1}},{ "$limit":2},{ "$skip":1})
#������users���������������������{ "_id" : 1, "name" : "dave123", "q1" : true, "q2" : true }{ "_id" : 2, "name" : "dave2", "q1" : false, "q2" : false }{ "_id" : 3, "name" : "ahn", "q1" : true, "q2" : true }{ "_id" : 4, "name" : "li", "q1" : true, "q2" : false }{ "_id" : 5, "name" : "annT", "q1" : false, "q2" : true }{ "_id" : 6, "name" : "li", "q1" : true, "q2" : true }{ "_id" : 7, "name" : "ty", "q1" : false, "q2" : true }#������������������users���������������������3���������db.users.aggregate( [ { $sample: { size: 3 } } ])
������$match ������ select post from db1.emp where age > 20 group by post having avg(salary) > 10000; #$match #1���select post from db1.emp where age > 20 db.emp.aggregate({"$match":{"age":{"$gt":20}}}) #$group #2���select post from db1.emp where age > 20 group by post; db.emp.aggregate( {"$match":{"age":{"$gt":20}}}, {"$group":{"_id":"$post"}} ) #3���select post,avg(salary) as avg_salary from db1.emp where age > 20 group by post; db.emp.aggregate( {"$match":{"age":{"$gt":20}}}, {"$group":{"_id":"$post","avg_salary":{"$avg":"$salary"}}} ) #select post from db1.emp where age > 20 group by post having avg(salary) > 10000; db.emp.aggregate( {"$match":{"age":{"$gt":20}}}, {"$group":{"_id":"$post","avg_salary":{"$avg":"$salary"}}}, {"$match":{"avg_salary":{"$gt":10000}}} )������{"$project":{"���������������������":1,"���������������������":0,"������������������":"���������"}} ���1��� db.emp.aggregate( {"$project":{"_id":0,"name":1,"post":1,"annual_salary":{"$multiply":[12,"$salary"]}}}, {"$group":{"_id":"$post","������������":{"$avg":"$annual_salary"}}}, {"$match":{"������������":{"$gt":1000000}}}, {"$project":{"���������":"$_id","������������":1,"_id":0}} ) ���2��� db.emp.aggregate( {"$project":{"_id":0,"name":1,"hire_period":{"$subtract":[new Date(),"$hire_date"]}}} ) db.emp.aggregate( {"$project":{"_id":0,"name":1,"hire_year":{"$year":"$hire_date"}}} ) db.emp.aggregate( {"$project":{"_id":0,"name":1,"hire_period":{"$subtract":[{"$year":new Date()},{"$year":"$hire_date"}]}}} ) ���3��� db.emp.aggregate( {"$project":{"_id":0,"new_name":{"$toUpper":"$name"},}} ) db.emp.aggregate( {"$match":{"name":{"$ne":"egon"}}}, {"$project":{"_id":0,"new_name":{"$concat":["$name","_SB"]},}} ) db.emp.aggregate( {"$match":{"name":{"$ne":"egon"}}}, {"$project":{"_id":0,"new_name":{"$substr":["$name",0,3]},}} )������{"$group":{"_id":������������,"���������������":���������������}} #select post,max,min,sum,avg,count,group_concat from db1.emp group by post; db.emp.aggregate( {"$group":{ "_id":"$post", "max_age":{"$max":"$age"}, "min_id":{"$min":"$_id"}, "avg_salary":{"$avg":"$salary"}, "sum_salary":{"$sum":"$salary"}, "count":{"$sum":1}, "names":{"$push":"$name"} } } )���������������$sort������������$limit������������$skip db.emp.aggregate( {"$match":{"name":{"$ne":"egon"}}}, {"$project":{"_id":1,"new_name":{"$substr":["$name",0,3]},"age":1}}, {"$sort":{"age":1,"_id":-1}}, {"$skip":5}, {"$limit":5} )# ������db.emp.aggregate({"$sample":{"size":3}})
��� ��������� db.table.update( ������, ������������, ������������ ) update db1.t1 set id=10 where name="egon"; db.table.update( {}, {"age":11}, { "multi":true, "upsert":true } ) 1���update db1.user set age=23,name="���������" where name="wupeiqi"; #��������� db.user.update( {"name":"wupeiqi"}, {"age":23,"name":"���������"} ) #������������:$set db.user.update( {"name":"alex"}, {"$set":{"age":73,"name":"���������-alex"}} ) #��������� db.user.update( {"_id":{"$gte":1,"$lte":2}}, {"$set":{"age":53,}}, {"multi":true} ) #��������������������������� db.user.update( {"name":"EGON"}, {"$set":{"name":"EGON","age":28,}}, {"multi":true,"upsert":true} ) #������������������ db.user.update( {"name":"���������-alex"}, {"$set":{"addr.country":"Japan"}} ) #������������ db.user.update( {"name":"���������-alex"}, {"$set":{"hobbies.1":"Piao"}} ) #������������ db.user.update( {"name":"���������-alex"}, {"$unset":{"hobbies":""}} ) 2���$inc db.user.update( {}, {"$inc":{"age":1}}, {"multi":true} ) db.user.update( {}, {"$inc":{"age":-10}}, {"multi":true} ) 3���$push, $pop $pull db.user.update( {"name":"yuanhao"}, {"$push":{"hobbies":"tangtou"}}, {"multi":true} ) db.user.update( {"name":"yuanhao"}, {"$push":{"hobbies":{"$each":["������","������"]}}}, {"multi":true} ) #���������-1������������1 db.user.update( {"name":"yuanhao"}, {"$pop":{"hobbies":-1}}, {"multi":true} ) db.user.update( {"name":"yuanhao"}, {"$pop":{"hobbies":1}}, {"multi":true} ) #������������ db.user.update( {"name":"yuanhao"}, {"$pull":{"hobbies":"������"}}, {"multi":true} ) #3���$addToSet db.t3.insert({"urls":[]}) db.t3.update( {}, {"$addToSet":{"urls":{"$each":[ "http://www.baidu.com", "http://www.baidu.com", "http://www.baidu.com", "http://www.baidu.com", "http://www.baidu.com" ]}}}, {"multi":true} )
������������
1. ������������������������������������������������2. ������������������������������������������������������3. ���������������������������������������������4. ���������������������������������������������������������������������������5. ���������������������������������������������������������������������������������6. ���������������������������������������������2���������������������������������������������������7. ���������������������������������10000���������������������������8. ���������������������������������10000���������20000���������������������������9. ������������������������������������age���������������������age���������������hire_date������������10. ���������������������������������10000���������������������������,���������������������������������11. ���������������������������������10000���������������������������,���������������������������������,������1���
1. ������������������������������������������������db.emp.aggregate({"$group":{"_id":"$post","names":{"$push":"$name"}}})2. ������������������������������������������������������db.emp.aggregate({"$group":{"_id":"$post","count":{"$sum":1}}})3. ���������������������������������������������db.emp.aggregate({"$group":{"_id":"$sex","count":{"$sum":1}}})4. ���������������������������������������������������������������������������db.emp.aggregate({"$group":{"_id":"$post","avg_salary":{"$avg":"$salary"},"max_salary":{"$max":"$salary"},"min_salary":{"$min":"$salary"}}})5. ���������������������������������������������������������������������������������db.emp.aggregate({"$group":{"_id":"$sex","avg_salary":{"$avg":"$salary"}}})6. ���������������������������������������������2���������������������������������������������������db.emp.aggregate({ "$group":{"_id":"$post","count":{"$sum":1},"names":{"$push":"$name"}}},{"$match":{"count":{"$lt":2}}},{"$project":{"_id":0,"names":1,"count":1}})7. ���������������������������������10000���������������������������db.emp.aggregate({ "$group":{"_id":"$post","avg_salary":{"$avg":"$salary"}}},{"$match":{"avg_salary":{"$gt":10000}}},{"$project":{"_id":1,"avg_salary":1}})8. ���������������������������������10000���������20000���������������������������db.emp.aggregate({ "$group":{"_id":"$post","avg_salary":{"$avg":"$salary"}}},{"$match":{"avg_salary":{"$gt":10000,"$lt":20000}}},{"$project":{"_id":1,"avg_salary":1}})9. ������������������������������������age���������������������age���������������hire_date������������db.emp.aggregate({"$sort":{"age":1,"hire_date":-1}})10. ���������������������������������10000���������������������������,���������������������������������db.emp.aggregate({ "$group":{"_id":"$post","avg_salary":{"$avg":"$salary"}}},{"$match":{"avg_salary":{"$gt":10000}}},{"$sort":{"avg_salary":1}})11. ���������������������������������10000���������������������������,���������������������������������,������1���db.emp.aggregate({ "$group":{"_id":"$post","avg_salary":{"$avg":"$salary"}}},{"$match":{"avg_salary":{"$gt":10000}}},{"$sort":{"avg_salary":-1}},{"$limit":1},{"$project":{"date":new Date,"������������":"$avg_salary","_id":0}})
��� ���������������
��� pymongo
from pymongo import MongoClient#1���������client=MongoClient('mongodb://root:123@localhost:27017/')# client = MongoClient('localhost', 27017)#2���use ���������db=client['db2'] #������������client.db1#3������������������������������print(db.collection_names(include_system_collections=False))#4���������������table_user=db['userinfo'] #������������db.user#5���������������import datetimeuser0={ "_id":1, "name":"egon", "birth":datetime.datetime.now(), "age":10, 'hobbies':['music','read','dancing'], 'addr':{ 'country':'China', 'city':'BJ' }}user1={ "_id":2, "name":"alex", "birth":datetime.datetime.now(), "age":10, 'hobbies':['music','read','dancing'], 'addr':{ 'country':'China', 'city':'weifang' }}# res=table_user.insert_many([user0,user1]).inserted_ids# print(res)# print(table_user.count())#6���������# from pprint import pprint#������������# pprint(table_user.find_one())# for item in table_user.find():# pprint(item)# print(table_user.find_one({"_id":{"$gte":1},"name":'egon'}))#7���������table_user.update({'_id':1},{'name':'EGON'})#8���������������������������������������table_user.save( { "_id":2, "name":'egon_xxx' })
发表评论
最新留言
关于作者
