数据库之MongoDB基本操作

MongoDB

简介

  • MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
  • 是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库中最像关系型数据库的一种,是功能最丰富的非关系型数据库。

安装及测试

  • 安装:

    • 双击安装包,然后一路NEXT即可完成安装

    • 将安装目录添加系统环境变量PATH下

    • 创建目录

      c:\data\db				# 存放数据
      c:\data\log				# 存放日志
      
  • 启动连接

    • 启动服务:mongod --dbpath c:\data\db
    • 客户端连接:mongo,默认地址:127.0.0.1:27017
    • ubuntu下启动:sudo service mongodb start
    • ubuntu下关闭:sudo service mongodb stop
  • 将MongoDB添加到windows系统服务(需要以管理员身份运行终端)

    • 添加服务:mongod --dbpath "c:\data\db" --logpath "c:\data\log\MongoDB.log" --install --serviceName "MongoDB"
    • 移除服务:mongod --dbpath "c:\data\db" --logpath "c:\data\log\MongoDB.log" --remove --serviceName "MongoDB"
    • 服务控制:net start|stop MongoDB

MySQL与MongoDB对比

  • 相关概念

    MySQLMongoDB
    database(数据库)db(数据库)
    table(数据表)collection(集合)
    row(行)document(文档)
    column(列)field(域/字段)

db操作

  • 查看所有数据库:show dbs,若数据库中没有数据,则不会显示出来
  • 查看当前数据库:dbdb.getName()
  • 创建并切换数据库:use python1806
    • 数据库存在直接切换,不存在创建后再切换
    • 当数据库中没有数据时,show dbs不会显示
  • 删除当前数据库:db.dropDatabase()
  • 查看帮助:help
  • 退出:exitquit()

collection操作

  • 查看当前数据库下的所有集合:show collections
  • 创建集合:
    • 单纯创建:db.createCollections('user'),会创建一个空集合
    • 按需创建:db.stu.insert({name:'shuorui', age:30}),直接操作不存在的集合,系统会自动创建
  • 删除集合:db.stu.drop()

document操作

  • 增加文档:

    • insert
    # 插入一条数据
    db.user.insert({name:'jiwei', age:29, height:175, isDelete:0})
    # 插入多条数据
    db.user.insert([{name:'zhihui',age:18, height:168, isDelete:0},{name:'minghui', age:28, height: 173, isDelete:0}])
    
    • save
    # 保存的数据没有_id字段,会插入一个新的文档
    db.user.save({name:'wenke', age:40, height:178, isDelete:0})
    # 保存的数据有_id字段,会修改对应的数据
    db.user.save({_id:ObjectId("5be3ecf105c088a265a0b578"), name:'wenke',age:30, height: 178, isDelete:0})
    
  • 更新文档

    • save
    # 保存的数据有_id字段,会修改对应的数据,就相当于更新操作
    db.user.save({_id:ObjectId("5be3ecf105c088a265a0b578"), name:'wenke',age:25, height: 178, isDelete:0})
    
    • update:db.集合.update(query, update, {upsert:<boolean>, multi:<boolean>})
      • query:表示查询条件
      • update:表示更新设置的内容
        • $set:表示设置
        • $inc:表示增加
      • upsert:更新的查询结果不存在,是否作为新数据插入,默认为false
      • multi:符合条件的数据是否全部更新;true表示全部更新,false表示更新一条,默认为false
    db.user.update({age: 25}, {$set:{age:26}})						# 只会更新一条
    db.user.update({height:175}, {$inc:{height: 1}}, {multi: true})	# 会更新全部
    
  • 删除文档

    • remove:db.集合.remove(query,{justOne:<boolean>})
    db.user.remove({height: 176})					# 默认删除所有数据
    db.user.remove({isDelete:0}, {justOne:true})	# 只会删除一条数据
    
    • delete:官方推荐
    db.user.deleteOne({isDelete: 0})		# 删除一条数据
    db.user.deleteMany({isDelete: 0})		# 删除所有数据
    
  • 查询文档

    • 格式:db.集合.find(query, {key1:0/1, key2:0/1, keyn:0/1})
      • query:查询条件
      • key:表示字段名
      • 第二个参数要么同时为1表示显示的字段,要么同时为0表示排除的字段
    db.user.find({},{name:1, age:1}).pretty()			# 只显示name和age
    db.user.find({},{name:0, age:0}).pretty()			# 不显示name和age
    
    • pretty():格式化显示数据(类似于字典形式显示)
    db.user.find().pretty()
    
    • findOne
     db.user.findOne({isDelete:0})			# 只返回条数据
    

查询条件操作符

  • 大于:$gt
    • 格式:db.集合.find({<key>: {$gt: <value>}})
    • 示例:db.user.find({height: {$gt: 170}})
  • 大于等于:$gte
  • 小于:$lt
  • 小于等于:$lte
  • 等于:$eq,不写默认就是等于
  • 不等于:$ne
  • 多个条件:默认是并且的关系
	db.user.find({height: {$gt: 165, $lt: 175}})
	db.user.find({height: {$gt: 165}, age: {$gt:25}})
  • 数据统计:count(),示例:db.user.find().count()
  • 正则查找:db.集合.find({<key: /正则表达式/>})

条件合并(and/or)

  • and:表示并且
    • 格式:db.集合.find({条件1,条件2})
    • 示例:db.user.find({age: {$gt: 25}, isDelete: 0})
    • 繁琐:db.user.find({$and: [{age: {$gt: 25}}, {isDelete: 0}]})
  • or:表示或者
    • 格式:db.集合.find({$or: [{条件1}, {条件2}]})
    • 示例:db.user.find({$or: [{height: {$gt: 170}},{age: {$lt: 25}}]})

限制结果集

  • 限制数量:limit()
    • 示例:db.user.find().limit(2)
  • 跳过数量:skip()
    • 示例:db.user.find().skip(2)
  • 综合使用:db.user.find().skip(2).limit(2)

结果集排序

  • 格式:db.集合.find().sort({<key>: 1/-1})
    • key:表示排序的字段
    • 1/-1表示排序规则:1表示升序,-1表示降序
  • 示例:db.user.find().sort({age: 1, height: 1})
    • 可以指定多个排序字段,前面的值一样时,按照后面的字段排序

索引管理

  • 说明:创建索引就是为了提高查询效率,1表示升序,-1表示降序,background表示后台执行
  • 示例:
 	db.user.createIndex({age: 1},{background: true})				# 单独创建索引
    db.user.createIndex({age: 1, height: -1},{background: true})	# 创建组合索引
  • 使用:db.user.find({age: {$gt: 20}}),默认会按照age字段进行升序排序

Python操作MongoDB

  • 安装扩展:pip install pymongo
  • 连接服务器:
 from pymongo import MongoClient
      
      # 创建连接
      connect = MongoClient(host='127.0.0.1', port=27017)
      
      # 选择数据库
      # db = connect.test
      db = connect['test']
      
      # 打印当前库的名字
      # print(db.name)
      
      # 查看当前看中的所有集合名称
      ret = db.collection_names()
      print(ret)
      
      # 关闭连接
      connect.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值