Mongodb 操作

数据库操作:
show dbs;#查看数据库
use test;#如果没有就创建一个
db;#查看当前数据库
db.dropDatabase();#删除数据库

 

数据操作

创建集合 db.stu.insert({})  没有自动创建

 

更新

db.student.update({"name":"张三"},{"name":"张三丰"});#如果有多条语句,只修改第一条,会覆盖原有数据
db.student.update({"22":"女"},{"name":"张三丰"});
db.student.update({"name":"张三"},{$set:{"name":"张无忌"}});#只想改某个key的value使用set
db.student.update({"name":"王五"},{$set:{"name":"张无忌"}},{multi:true});#把所有的记录都改了

参数说明:

  • query : update的查询条件,类似sql update查询内where后面的。
  • update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
  • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :可选,抛出异常的级别。

删除

db.student.remove({});#删除所有数据
db.student.remove({"22":"女"});#按照条件删除

 

查看

db.stu.find()
db.stu.find({key1:value1,key2:value2}) #AND逻辑

db.stu.find({$or:[{key1:value1},{key2,value2}]})

db.stu.find({$or:[{name:"fakered"},{"age":{$gt:20}}]}) #OR逻辑

db.stu.find(key1:value1) #等于

db.stu.find({"age":{$gte:20}}) #大于等于

db.stu.find({"age":{$lte:20}}) #小于等于

db.stu.find({"age":{$ne:50}}) #不等于

 

type 操作符

do.stu.find({"title":{$type:2}}) 获取title为string的数据

skip,limit

先skip再limit

数据量大时尽量避免使用skip

b.test.sort({"amount":1}).skip(100000).limit(10)  //183ms
db.test.find({amount:{$gt:2399927}}).sort({"amount":1}).limit(10)  //53ms


排序
db.stu.find().sort({age:1}) 正序
db.stu.find().sort({age:-1}) 倒序

索引
db.COLLECTION_NAME.ensureIndex(keys[,options])

查看索引
db.COLLECTION_NAME.getIndexes()
db.COLLECTION_NAME.totalIndexSize()查看索引大小
db.system.indexes.find() 查看所有索引
db.COLLECTION_NAME.dropIndex("INDEX-NAME") 删除索引


聚合函数
db.stu.aggregate([{$group:{_id:null,max:{$max:"$age"}}}]) #求最大值
db.stu.aggregate([{$group:{_id:null,sum:{$sum:"$age"}}}]) #求总和





python 操作mongodb
client=MongoClient("mongodb://localhost:27017")
db=client.saku
sub=db.stu


循环插入数据
for(int i=0;i<1000;i++)
{db.test.insert({name:"faker"+i,age:i})
    }

 

posted @ 2018-02-07 19:52  Maskisland  阅读(144)  评论(0编辑  收藏  举报