mongodb数据库

mongodb与mysql区别:
mysql(关系型数据库):
优点:
支持事务:对于需要保证数据一致性和完整性的操作,事务处理能力非常重要
数据一致性:严格遵守关系数据的特征ACID(原子性,一致性,隔离性,持久性)
复杂查询优化:对于复杂的关联查询和数据分析,具有较好的优化器和性能
场景:如果数据有明确的结构,并且关系紧密,适合用mysql,例如:金融,电商等对数据要求较高
mongodb(Nosql):
优点:
灵活性:文档型数据库,结构灵活,无需事先定义严格的模式,便于快速开发和迭代
扩展性:水平扩展相对容易,可以通过分片来实现大规模数据存储
高并发写入:对于写入操作频繁的场,性能较好。
快速开发:适合敏捷开发,能够快速适应不断变化的数据结构需求
场景:半结构化或非结构化:如日志数据,用户配置文件等,快速迭代项目:数据结构不稳定的情况下,mongodb更易于使用,例如:社交网络,实时数据分析等

查询对比:

采用docker安装
   docker run -d --name mongodb \
   -p 27017:27017 \
   -v /your/local/mongodb:/data/db \
   -v /your/local/mongodb/mongod.conf:/etc/mongod.conf 
   mongo
#配置账号密码
mongo admin #进去管理员账号
#创建用户
db.createUser({user:'root',pwd:'root',roles:[{role:"root", db:"admin"},'readWrite']});
#连接mongodb
db.auth('root', 'root')
#如果数据库不存在则自动创建
use  test
#查看有权限看的所有的数据库命令
show dbs
# 创建集合
db.collection(name) #显示创建
#查看
show collections
#删除
db.name.drop()
#单个文档插入
db.集合名称.insert({"name":"xujie"})
#查询
db.集合名称.find()

#插入多个
db.集合名称.insertMany([{"name":"xujie"}])

#条件查询
db.集合名称.find({"字段":"值"})

#查询数据第一条数据
db.集合名称.findOne({"字段":"值"})

# 投影查询,只想显示部分字段
db.集合名称.find({"字段":"值"},{字段名:1,字段名:1}默认会显示id,可以采用{_id:0}
# 批量插入失败怎么办
try{
 db.集合名称.insertMany([{"name":"xujie"}]);
}catch(e){
 print(e)
}
#文档更新
db.colletion.update({“查询字段”:"值"},{"更新字段":"值"})  # 覆盖修改
db.colletion.update({“查询字段”:"值"},{$set:{"更新字段":"值"}}) #局部修改
db.colletion.update({“查询字段”:"值"},{$set:{"更新字段":"值"}},{multi:true}) #批量修改
db.colletion.update({“查询字段”:"值"},{$inc:{"列":NumberInt(1)}}) #给某一个列加1
#删除
db.colletion.remove({“字段”:"值"})

#分页查询
db.colletion.count({“字段”:"值"}) #统计总条数
db.colletion.find().limit(2)  # 只展示两条
db.colletion.find().limit(2).skip(2) #跳过前两条,每页展示2条

#排序查询
db.colletion.find().sort({排序字典:1}) #1代表升序,-1代表降序

#正则查询
db.colletion.find({字段:/正则表达式/})
# 比较查询
db.集合名称.find({"字段":{$gt :value}})

# 包含查询
db.集合名称.find({"字段":{$in:[“值”,“值”]}}) #包含
db.集合名称.find({"字段":{$nin:[“值”,“值”]}}) #不包含

# 多条件查询
db.集合名称.find($and:["字段":{$gt :value},{"字段":"值"}])
db.集合名称.find($or:["字段":{$gt :value},{"字段":"值"}])
posted @ 2024-07-14 14:01  9912  阅读(4)  评论(0编辑  收藏  举报