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})
    }

 

转载于:https://www.cnblogs.com/Maskisland/p/8428218.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值