链接: https://my.oschina.net/u/2417992/blog/3053325
数据库不需要提前创建,插入数据时自动创建
show dbs
查看所有的数据库集合不需要提前创建,插入数据时自动创建
db.集合名.drop() # 删除集合
db.集合名.find({条件}) # 查询特定条件的数据
db.jarvis.update({name:1023},{$set:{age:1}},{multi:true})
多行修改db.stu.insert([{
"name":"郭靖","hometown":"蒙古","age":20,"gender":true},{
"name":"黄蓉","hometown":"桃花岛","age":18,"gender":false},{
"name":"华筝","hometown":"蒙古","age":18,"gender":false},{
"name":"黄药师","hometown":"桃花岛","age":40,"gender":true},{
"name":"段誉","hometown":"大理","age":16,"gender":true},{
"name":"段王爷","hometown":"大理","age":45,"gender":true},{
"name":"洪七公","hometown":"华山","age":81,"gender":true}])
db.stu.find({"age":{$lt:20}})
db.stu.find({"age":{$lte:20}})
db.stu.find({"age":{$gt:20}})
db.stu.find({"age":{$ne:20}})
db.stu.find({"age":{$ne:20},hometown:"蒙古"})
db.pro.insert([{
stu:"abc123",tea:"jarvis"},{
stu:"abc456",tea:"wu"},{
stu:"xyz123",tea:"zhangsan"}])
db.pro.find({stu:/^abc/})
查找stu的值以abc开头的数据,db.pro.find({stu:/123$/})
查找stu的值以123结尾的所有数据db.stu.find().limit(3)
:限制读取三条数据db.stu.find().skip(3)
:跳过前三条数据db.stu.find().skip(1).limit(2)
:跳过一条数据再读取两条数据方法sort(),用于对集合排序,参数1为升序,参数-1为降序
db.stu.find().sort({age:1,gender:-1})
:按照年龄升序,性别降序进行排序,先按年龄排序,再按性别排序方法count(),用于查询包含指定条件的元素出现的次数
db.stu.count()
db.stu.count({age:{$gte:18}})
方法distinct(),返回一个数组
db.stu.distinct("hometown")
db.stu.distinct("hometown",{age:{$gt:18}})
显示指定的字段的内容
db.stu.find({},{name:1})
参数值为1表示true,0表示falsedb.stu.find({}, {name:1,__id:0})
db.stu.find({age:{$gt:18}},{name:1})
求以hometown分组的元素个数,总年龄以及平均年龄
db.stu.aggregate({$group:{_id:"$hometown",count:{$sum:1},total_age:{$sum:"$age"},avg_age:{$avg:"$age"}}})
不分组,求整个文档中各个数据的情况
db.stu.aggregate({$group:{_id:null,count:{$sum:1},total_age:{$sum:"$age"},avg_age:{$avg:"$age"}}})
统计整个文档
数据透视(把不同行的数据放到一行来展示)
db.stu.aggregate({$group:{_id:"$gender",name:{$push:"$name"},hometown:{$push:"$hometown"}}})
在管道中过滤数据
db.stu.aggregate({$match:{age:{$gt:18}}},{$group:{_id:"$age"}})
输出自己想要了解的字段
输出所有的name对应的值,不输出_id
db.stu.aggregate({$project:{name:1,_id:0}})
s o r t 排 序 、 sort排序、 sort排序、skip跳过、$limit限制
db.stu.aggregate(
{$group:{_id:"$hometown",count:{$sum:1}}},
{$sort:{count:-1}},
{$skip:1},
{$limit:2})
db.t255.createIndex({name:1})
测试:插入10万条数据到数据库中
for(i=0;i<100000;i++){db.t255.insert({name:'test'+i,age:i})}
创建索引前:
db.t255.find({name:'test100000'})
db.t255.find({name:'test100000'}).explain('executionStats')
创建索引后:
db.t255.createIndex({name:1})
db.t255.find({name:'test100000'}).exlain('executionStats')
默认情况下,_id是集合的索引
查看方式:db.t255.getIndexes()
在默认情况下mongodb的索引字段的值是可以相同的,仅仅能够提高查询速度,不能保证数据的唯一性,添加唯一索引的语法:
db.t255.createIndex({name:1},{unique:true})
备份的语法:mongodump -h dbhost -d dbname -o dbdirectory
示例:mongodump -h 192.168.196.128:27017 -d test1 -o ~/Desktop/test1bak
恢复的语法:mongorestore -h dbhost -d dbname --dir dbdirectory
示例:mongorestore -h 192.168.128:27017 -d test2 --dir ~/Desktop/test1bak/test1
安装:pip install pymongo
建立连接:
from pymongo import MongoClient
# 建立和MongoDB的链接
client = MongoClient(host='服务器ip', port=27017)
collection = client['test100']['t1']
# 插入一条数据
collection.insert_one({
"name":10086,"age":20})
插入一条数据:isnert_one
插入多条数据:insert_many
删除一条数据:delete one
删除多条数据:delete many
修改一条数据:update_one
修改多条数据:update_many
查找一条数据:find_oen
查找多条数据:find