MongoDB基础

MongoDB配置数据库

  • 方式一
    在bin目录同目录下建data\db文件夹
    mongod --dbpath=..\data\db
    
  • 方式二
    在bin目录同目录下建conf文件夹,存在conf中建mongod.conf文件,内容如下:
    storage:
       #The directory where the mongod instance stores its data.Default Value is "\data\db" on Windows.
       dbPath: D:\dev\MongoDB\mongodb-win32-x86_64-windows-6.0.5\data\db
    

启动MongoDB

Mongodb6.0以上需要下载 MongoDB Shell 解压,将bin目录配置到环境变量中,启动mongodb ,cmd输入:

mongosh 或者 mongosh --host=localhost --port=27017

基本命令

user dbname 选择和创建数据库
show dbs 查看所有数据库
db 查看当前数据库
db.dropDatabase() 删除当前库
db.createCollection("my") 创建名为my的集合
show collections/tables 查看当前库中的集合'
db.集合.drop() 删除集合

插入

db.user.insert({"name":"张三","age":"20"}) 插入一条数据 隐式创建集合
db.user.insertMany([{"name":"张三","age":20},{"name":"里斯","age":21}]) 插入多个数据

查询

db.user.find() 查询user表 
db.user.find({age:20})  查询user表中年龄为20的数据
db.user.find({"age":20},{name:1}) 查询user表中年龄为20的数据,只显示name字段 1表示显示,0表示不显示
db.user.findOne({age:20}) 查询符合条件(年龄为20)的第一条数据

更新

db.集合.update(查询条件,更新的数据,选项) 更新数据   默认只修改第一条数据
db.user.update({name:"张三"},{$set:{age:18}}) 局部修改
db.user.update({name:"张三"},{age:18}) 覆盖修改,将{name:"张三",age:20} 修改为 {age:18}  
db.user.update({name:"张三"},{$inc:{age:1}}) 列值增长修改 将张三的年龄+1

删除

db.集合.remoce(条件)  删除语句。若条件为{} 则删除所有数据
db.user.remove({"name":"王五"}) 删除名字为王五的数据

分页查询

db.集合.count(条件,选项)
db.user.count() 查询user表中所有记录数
db.user.count({age:21}) 查询user表中age = 21的记录数量
db.集合.find().limit(读取指定数量).skip(跳过指定数量) 
db.user.find().limit(2) 查询前两条数据
db.user.find().skip(2) 跳过前两条,查询后边的数据
分页需求:每页两个 
db.user.find().skip(0).limit(2)  第一页
db.user.find().skip(2).limit(2)  第二页
db.user.find().skip(4).limit(2)  第三页

排序查询

按照年龄进行升序排序 1表示升序 -1表示降序 ,可以指定多个条件 eg:{ age:1,name:-1}表示先按年龄升序,在按姓名降序
db.user.find().sort({age:1}) 

正则查询

db.user.find({name:/三/}) /xxx/ 包含  查询name 包含 ‘三’的数据  
db.user.find({name:/^张/}) /^xxx/ 以xxx开头  查询姓张的数据

比较查询

db.user.find({age:{$gt:20}}) 查询年龄大于20 的数据  
$gt --- >
$lt --- <
$gte --- >=
$lte --- <=
$ne --- !=

包含查询

db.user.find({age:{$in:[20,21]}}) 查询age 包含20 和21 的文档 不包含使用$nin

条件连接查询

$and:[{ },{ },{ }] 查询需要同时满足多个条件使用$and
db.user.find({$and:[{age:{$gt:19}},{age:{$lt:21}}]}) 查询age >19 和age<21的文档
$or:[{},{},{}]   或者 与$and 使用方式相同 ```