MongoDB应用

常用指令(Mongo shell)

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

新建collection

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

查询doc

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

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

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

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

更新doc

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

删除doc

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

映射Projection

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

限制记录Limit和Skip

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

排序sort

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

索引

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

聚合

select by_user, count(*) from mycol group by by_user
这是SQL语法 ,用来对同by_user字段聚合并计数
在Mongo等价于
db..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 }

你可能感兴趣的:(MongoDB应用)