MongoDB应用

常用指令(Mongo shell)

show dbs;//显示已有数据库,空数据库不显示
db.dropDatabase(); //删除当前数据库,需要先用use命令切换,db表示当前数据库,没有db.默认删除test 数据库
show collections; //查看已有collection
db.<collection>.drop();//删除集合和其索引
db.<collection>.remove();//删除集合

新建collection

db.createCollection("<name>");//不带选项的
db.newcollection.insert({"name":{"xiaoming"}});//相当于新建名为newcollection的collection
db.newcollection.save(<doc>);//同insert对比 save函数实际就是根据参数条件,调用了insert或update函数.如果想插入的数据对象存在,insert函数会报错,而save函数是改变原来的对象;如果想插入的对象不存在,那么它们执行相同的插入操作
怎么判断是不是同一个obj存在,根据的是_id
db.<collection>.insert//查看insert源码

查询doc

db.<collection>.findOne()
db.<collection>.find()
db.<collection>.find().pretty();//JSON格式化

条件查询
db.<collection>.find({"count":{$lt:10}})//count 字段小于10,类似关键字还有gt,lte,gte,ne

db.<collection>.find({"count":{$lt:10}, "count":{$gt:5}})//AND实现

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

更新doc

db.<collection>.update({'count': '5'},{$set:{'result': 'true'}})//默认只更新一个doc
db.<collection>.update({'count': '5'},{$set:{'result': 'true'}},{multi: true})//默认只更新一个doc

删除doc

db.<collection>.remove({"count":"5"},1);//删除第一个count为5的doc

映射Projection

db.<collection>.find({"count": "5"},{_id:0,"count":1});//1表示映射该字段,0相反,默认都映射

限制记录Limit和Skip

db.<collection>.find({'count':'1'}).limit(1).skip(1)

排序sort

db.<collection>.find({}).sort({"count":1})//根据字段count升序排列

索引

db.<collection>.ensureIndex({"count":1})//1表示索引排列顺序,选项包括unique

聚合

select by_user, count(*) from mycol group by by_user
这是SQL语法 ,用来对同by_user字段聚合并计数
在Mongo等价于
db.<collection>.aggregate([$group:{_id:"$by_user",num_tutorial:{$sum:1}}])

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])//like 总数

聚合与管道

管道的概念

db.tgateinfos.aggregate([{$project:{Type: 1,_id:0}}])//结果{ "Type" : 51 }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容