MongoDB常用命令
#1.创建数据库
use testdb
#2.创建集合
db.user.insert({name:"Mr.Liu",age:23})
#3.查询
db.user.find()
db.user.findOne()
db.user.find().pretty() pretty()用于格式化显示的内容
#4.修改
# 修改不会影响其他属性列,主键冲突会报错
db.user.update({name:"Mr.Liu"},{$set:{age:18}})
# 第三个参数为true 则执行insertOrUpdate 操作,查询出则更新,没查出则插入
db.user.update({name:"zhaomin"},{$set:{age:18}},true)
#5.删除
# 删除满足条件的第一条 只删除数据 不删除索引
db.user.remove({age:1})
# 删除集合
db.user.drop()
#删除数据库
db.dropDatabase()
#6.查看集合
show collections 或者 show tables
#7.查看数据库
show dbs
#8.插入数据
db.user.insert() #不允许键值重复
db.user.save() #若键值重复,可改为插入操作
# 如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。
#9.批量更新
db.user.update({name:"zhaomin"},{$set:{name:"zhanmin11"}},false,true);
# 批量操作需要和选择器同时使用,第一个false 表示不执行insertOrUpdate 操作,第二个true 表示执行批量
#10.更新器使用
#1.$set:指定一个键值对,若存在就进行修改,不存在则添加
db.user.update({id:137},{$set:{name:"Mr.Liu"}})
#2.$inc:只使用于数字类型,可以为指定键值对的数字类型进行加减操作
db.user.update({name:"zhangsan"},{$inc:{age:2}}) #执行结果是名字叫“zhangsan”的年龄加了2
#3.$unset:删除指定的键
db.user.update({name:"zhangsan"},{$unset:{age:1}})
#4.$push:数组键操作
1.如果存在指定的数组,则为其添加值;
2.如果不存在指定的数组,则创建数组键,并添加值;
3.如果指定的键不为数组类型,则报错;
db.user.update({id:137},{$push:{hobby:"swim"}})
#5.$addToSet:当指定的数组中有这个值时,不插入.反之插入
db.user.update({id:137},{$addToSet:{hobby:"swim"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 }) # 再次插入 swim,发现没成功
#6.$pop:删除指定数组的值
#1.当value=1 删除最后一个值
#2.当value=-1 删除第一个值
db.user.update({id:137},{$pop:{hobby:1}}) # 此处value为1,删除最后一个值
#7.$pull:删除指定数组指定的值
db.user.update({id:137},{$pull:{hobby:"swim"}})
#8.$pullAll:批量删除指定数组中的值(可以指定多个同时删除)
db.user.update({id:137},{$pullAll:{hobby:["study","swim"]}})
#9.$:修改指定数组时,若数组有多个对象,但只想修改其中一些,则需要定位器
db.user.update({"classes.type":"AA"},{$set:{"classes.$.sex":"male"}})
#10.$addToSet 与 $each 结合完成批量数组更新操作
db.user.update({name:"zhangsan"},{$set:{classes:{$each:["chinese","art"]}}})
#11.高级查询
#1
db.user.find({},{_id:0,name:1,address:1})
# 第一个空括号表示查询全部数据,第二个括号中值为0 表示不返回该字段,值为1 表示返回,默认情况下若不指定主键(_id主键),主键总是会被返回;
#2.比较操作符
$lt <
$lte <=
$gt >
$gte >=
$ne !=
# 查询年龄大于等于 25 小于等于 27 的人(不显示_id主键 和 hobby字段,并格式化显示)
db.user.find({age:{$gte:25,$lte:27}},{_id:0,hobby:0}).pretty()
#3.包含/不包含
$in / $nin
# 查询地址是 北京市 或 广东省 的学生的信息
db.user.find({address:{$in:["北京市","广东省"]}},{_id:0}).pretty()
#4. $or 或查询
# 查询年龄大于30岁 或 地址为 北京市 的学生的信息
db.user.find({$or:[{age:{$gt:30}},{address:{$eq:"北京市"}}]},{_id:0}).pretty()
db.user.find({$or:[{age:{$gt:30}},{address:{$in:["北京市"]}}]},{_id:0}).pretty()
#5. 正则表达式查询
# 查询出名字中存在"liu"的学生的信息
db.user.find({name:/liu/i},{_id:0}).pretty()
#6. $not 查询
$not 和 $nin 的区别是 :$not 可以用在任何地方
$nin 只用在集合上
# 查询名字中不是"liu"的其他学生的信息($not needs a regex or a document)
db.user.find({name:{$not:"liu"}},{_id:0}).pretty()
#7.$all 的查询
# 查询喜欢看 MONGOD 和 JS 的学生
db.user.find({books:{$all:["JS","MONGODB"]}},{_id:0,name:1})
#8.index 下标查询
# 查询 第三个爱好 是 games 的用户
db.user.find({"hobby.2":"games"}).pretty()
#9.$size 的使用(不能与比较查询符同时使用)
# 查询有 3 个爱好的用户信息
db.user.find({hobby:{$size:3}},{_id:0}).pretty()
#10.$slice 操作符返回文档中指定数组的内部值(此时hobby数组有5个值)
# 查询并返回id=137,hobby数组第2-4个爱好的用户信息
db.user.find({id:137},{_id:0,hobby:{$slice:[1,3]}}).pretty(); --会返回hobby数组下标为1,2,3的值
# 查询并返回id=137 hobby数组第2个爱好的用户信息(数组下标从0开始,数组最后一个为-1)
db.user.find({id:137},{_id:0,hobby:{$slice:1}}).pretty(); # 第2个爱好
db.user.find({id:137},{_id:0,hobby:{$slice:-1}}).pretty(); # 最后一个爱好
#11.limit/skip 分页查询
# limit 返回指定条数查询出 user表 中前5条数据:
db.user.find().limit(5).pretty()
# skip 指定跨度查询 查询出 user表中第5条数据后的5条数据
[类似分页.例如:单页5条数据,第2页数据为skip(5).limit(5);第3页数据为skip(10).limit(5)]
db.user.find().skip(5).limit(5).pretty()
# sort 排序 1为正序 -1为倒序
# user表按年龄倒序查询
db.user.find().sort({age:-1}).pretty()
#12.count 查询结果条数
db.user.find().count()
#13.distinct 去重(使用 runCommand 函数)
db.runCommand({
distinct:"user",
key:"name",
query:{$or:[{name:"Miss.Ma"},{id:141}]}
}).values
#12.runCommand函数和findAndModify函数
runCommand({
findAndModify:"表名",
query:{查询器},
sort:{排序},
update:{修改器},
new:true/false 是否返回修改后的数据
});
runCommand 函数可执行mongdb 中的特殊函数。
findAndModify 就是特殊函数之一,用于返回执行返回update 或 remove 后的文档
eg: db.runCommand({
findAndModify:"user",
query:{id:137},
update:{$set:{age:88}},
new:true
})
MongoDB常用命令,可以进入MongoDB命令行,通过 help 命令来查看。
MongoDB支持的所有命令如下:
通过命令 db.help()来查看 数据库层面 的方法:
通过 db.mycoll.help() 来查看 数据库表层面 的方法
通过 sh.help() 来查看 分片层面 的方法
通过 rs.help() 来查看 副本Replica层面 的方法
其他方法,你可以查看 通过 help admin、help connect、help mr ......等来查看具体使用方法
MongoDB命令,介绍到此为止