数据库操作
查看当前数据库
db
查看所有数据库
show databases
切换数据库(如果没有会自动创建)
use dbname
删除当前数据库(删除数据库所有集合)
db.dropDatabase()
集合的操作
查看当前数据的所有集合(相当于表)
show collections
创建新的集合
db.createCollection("Emp",{capped:true,size:6124800,max:10000})
删除集合
db.Emp.drop()
查看集合的详情
db.Emp.find()
格式化查看
db.Emp.find().pretty()
向集合插入数据
document={name:'zhangsan',age:'10',sex:'male'} --插入数据时,可以先创建一个文档
db.Emp.insert(document)
db.Emp.save(document) //save只能加一条数据
***注意点***
save吧document的_id固定下来
使用save操作某个document后,insert方法就不可使用了。否则可以一直使用insert
插入一条数据
db.Emp.insert({name:'zhangsan'});
db.Emp.insertOne({"a":3})
插入多条数据
db.Emp.insertMany([{name:'sss'},{name:'zz',age:'11'}])//不加Many也可
集合数据的更新
更新一条数据
db.Emp.update({'name':'chen'},{$set:{'name':'xiaochen'}}) //默认改第一条 更新一条set可以省略
db.Emp.update({_id:ObjectId("5d399db3cd6648e542dac1aa”),’name':'chen'},{$set:{'name':'xiaochen'}})
注意
造成该问题的原因是集合被设置成了 固定集合 。固定集合的数据不能被修改(只能改成相同长度的数据)。只能查找-删除-再插入
"errmsg" : "Cannot change the size of a document in a capped collection: 48 != 51"
更新多条数据
db.Emp.update({'name':'xiaochen'},{$set:{'name':'xiaolan'}},{multi:true})
//可以一次更新多条 ,这时要将multi设置成true
db.Emp.updateMany({'name':'xiaochen'},{$set:{'name':'xiaolan'}})
集合数据查询
$gt : >
$lt : <
$gte: >=
$lte: <=
$ne : !=、$amp;$in : in
$nin: not in
$all: all
$not: 反匹配(1.3.3及以上版本)
逻辑与或
> db.user.find({"name":"xiaolan"})
> db.user.find({"name":"xiaolan","hobby":["song1","writebook"]}) --- 直接写多个,中间以,隔开
> db.user.find({$or:[{"name":"xiaolan"},{"age":"10"}] }) --或:以$or开头,后面跟的是[]
> db.user.distinct('name'); --去掉重复数据
> db.user.find({name:/ao/}) --模糊查询 注意:必须有{}
> db.user.find({name:/^ao/}) --模糊查询 以ao开头
> db.user.find({name:/ao$/}) --模糊查询 以ao结尾
> db.user.find({},{"name":1,_id:0}).limit(2) --查询前两条记录,只显示name 注意:find后面第一个空的{}必须有 name后面的1代表显示 ,0是不显示
--_id:0 表示不显示_id limit(2) 表示查询2条
如果存在需要查询的列就输出,否则就不输出
> db.user.find({},{"name":1,_id:0}).limit(3).skip(1) --跳过前几条,查询后面的3条
> db.user.find({},{"age":1,_id:2}).limit(2).skip(1) --显示age,同时显示_id
> db.user.find({},{"age":1,_id:0}).limit(2).skip(1)
> db.user.find({},{"age":1}).limit(2).skip(1) --默认显示_id
> db.user.find({},{"age":0,_id:0}).limit(2).skip(1) ---"age":0 表示显示除age以外的内容
集合数据的删除
db.user.remove({});#删除所有数据
db.user.remove({"sex":"女"});#按照条件删除
db.user.remove({"name":"张无忌"},2);#删除几条