mongodb基本操作
土豆 2022/12/14 mongodbsql
# 数据库操作
查看版本号
mongod --version
连接数据库
mongo
退出
exit
查看数据库列表
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
创建数据库(use命名是切换数据库,如果不存在则新建数据库)
> use users
查看当前操作的数据库
> db
users
删除数据库
> use users
switched to db users
> db.dropDatabase()
{ "dropped" : "users", "ok" : 1 }
# 集合操作
> db.createCollection('test')
{ "ok" : 1 }
查看已有集合
> show collections
test
自动创建集合,当你插入一些数据时会自动创建集合
> db.students.insertOne({"name":"jack"})
> show collections
students
删除集合
# 创建aa集合
> db.createCollection('aa')
{ "ok" : 1 }
# 删除aa集合
> db.aa.drop()
true
# 文档操作
相当于对表里的数据操作
# 插入文档(增)
向文档插入一个或多个文档
db.stus.insert({name:'孙悟空',age:28,gender:"男"});
db.stus.insert([
{name:'张三',age:28,gender:"男"},
{name:'李四',age:18,gender:"男"}
])
插入一条数据文档
db.stus.insertOne({name:'孙悟空',age:28,gender:"男"});
插入多条数据
db.stus.insertMany(
{name:'张三',age:28,gender:"男"},
{name:'李四',age:18,gender:"男"}
)
# 修改文档
修改孙悟空的年龄为500
update默认修改第一个符合条件的文档
db.stus.update({name:'孙悟空'},{$set:{age:'500'}})
db.stus.updateOne({name:'孙悟空'},{$set:{age:'500'}})
修改多个符合条件的文档
db.stus.updateMany({name:'孙悟空'},{$set:{age:'500'}})
db.stus.update({name:'孙悟空'},{$set:{age:'500'}},{multi:true})
删除孙悟空的年龄属性
db.stus.update({name:"孙悟空"},{$unset:{age:"66666"}})
# 删除文档
删除姓名为张三的记录
remove删除符合条件所有记录
db.stus.remove({name:'张三'})
只删除第一个
db.stus.remove({name:'张三'},true)
db.stus.deleteOne({name:'张三'})
删除多个
db.stus.deleteMany({name:'张三'})
清空集合
db.stus.remove({})
# 查询文档
插寻所有文档
db.stus.find()
查找名字为张三的文档
db.stus.find({name:'张三'})
查找名字为张三年龄18岁的文档
db.stus.find({name:'张三',age:'18'})
查找第一个符合条件的文档
db.stus.findOne({name:'张三'})
查看文档记录数
db.stus.find().count()
查询年龄小于20岁的
db.stus.find({age:{$lt:20}})
查询年龄小于等于18岁的
db.stus.find({age:{$lte:18}})
查询年龄大于20岁的
db.stus.find({age:{$gt:20}})
查询年龄大于等于18岁的
db.stus.find({age:{$gte:18}})
查询年龄不等于20岁的
db.stus.find({age:{$ne:20}})
# 条件查询
AND 条件
MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开。
db.col.find({key1:value1, key2:value2})
查找名字为张三年龄18岁的文档
db.stus.find({name:'张三',age:'18'})
OR 条件
OR 条件语句使用了关键字 $or
db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
)
查找名字为张三或年龄20岁的文档
db.stus.find({$or:[{name:'张三'},{age:20}]})
AND 和 OR 联合使用
db.col.find(
{
key3:value3,
$or: [
{key1: value1}, {key2:value2}
]
}
)
# Limit与Skip方法
limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。
查询age等于18岁的一条记录
db.stus.find({age:18}).limit(1)
我们除了可以使用limit()方法来读取指定数量的数据外,还可以使用skip()方法来跳过指定数量的数据。
查询age等于18岁的一条记录,跳过第1条
db.stus.find({age:18}).limit(1).skip(1)
# 排序
sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。
db.COLLECTION_NAME.find().sort({KEY:1})
查询所有记录按id升序排序
db.stus.find().sort({_id:1})
# 投影
第二参数来设置投影,id默认显示。0不显示,1显示
查询所有只显示姓名
db.stus.find({},{name:1,_id:0})