常用指令(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 }
网友评论