博客
关于我
MongoDB - 库、集合、文档(操作 + 演示 + 注意事项)
阅读量:794 次
发布时间:2023-02-09

本文共 2132 字,大约阅读时间需要 7 分钟。

MongoDB 指南

一、MongoDB 简介

1.1 简介

MongoDB 是一种分布式文件存储数据库,由 C++ 编写,专为 Web 应用提供可拓展的高性能数据存储解决方案。它介于传统关系数据库和 NoSQL 数据库之间,支持灵活的数据结构,类似于 JSON 的 BSON 格式,能够存储复杂数据类型。MongoDB 的查询功能强大,语法类似于面向对象的查询语言,能够实现类似关系数据库单表查询的绝大部分功能,同时支持数据索引。

1.2 应用场景

MongoDB 适用于以下场景:

  • 游戏应用:用于存储用户装备、积分等数据,直接以内嵌文档形式存储,方便查询和更新。
  • 物流数据:用于存储订单状态更新,通过数组形式一次查询读取所有变更。
  • 社交应用:用于存储用户信息和朋友圈数据,支持地理位置查询。
  • 视频直播:用于存储用户信息和礼物信息。
  • 大数据应用:作为云存储系统,支持数据提取和分析。

1.3 MongoDB 的优势

MongoDB 的内存映射机制提高了 IO 操作效率,数据模型的灵活性减少了关联性,分布式集群支持了大规模并发请求。相比 MySQL,MongoDB 在读写性能上更具优势。

1.4 数据库概念

  • Database(库):类似于 MySQL 的数据库概念,用于隔离不同应用数据。
  • Collection(集合):类似于表,支持灵活数据存储,但无固定结构。
  • Document(文档):类似于数据库表中的记录,支持丰富字段和数据类型。

二、库操作

2.1 查看所有库

show databases;show dbs 命令可列出所有库,默认数据库为 test

2.2 创建并使用数据库

use dbname; 创建并切换到指定数据库。

2.3 查看当前数据库

默认连接的数据库为 test,可以使用 db 命令查看当前数据库。

2.4 删除数据库

db.dropDatabase(); 删除当前数据库。

三、集合操作

3.1 创建集合

db.createCollection('集合名', [options]); 可选参数包括 cappedsizemax

3.2 查看库中集合

show collections;show tables; 命令可查询集合。

3.3 删除集合

db.集合名称.drop(); 删除指定集合。

四、文档操作

4.1 插入文档

单条文档:
db.集合名称.insert({"name": "cyk", "age": 20});
多条文档:
db.集合名称.insertMany([ { "name": "cyk0", "age": 20 }, { "name": "cyk1", "age": 20 } ]);

4.2 删除文档

db.集合名称.remove(query, {justOne: true}); 可选参数包括 queryjustOne

4.3 更新文档

db.集合名称.update(query, update, {upsert: true, multi: true}); 可选参数包括 queryupdateupsertmulti

4.4 查询文档

db.集合名称.find(query, projection); 查询条件和投影操作可通过 pretty() 格式化显示。

五、查询优化

5.1 基本查询

db.集合名称.find(query); 可选投影操作。

5.2 查询条件示例

  • db.user.find({name: "cyk0"})
  • db.user.find({_id: {$lt: 5}})
  • db.user.find({age: {$ne: 5}})
  • db.user.find({$or: [{name: "cyk1"}, {name: "cyk2"}]})
  • db.user.find({likes: /钢/})
  • db.user.find().sort({_id: -1})
  • db.user.find().skip(3).limit(3);
  • db.user.distinct('name');
  • db.user.find({_id: {$gt: 5}}, {name: 1});

5.3 模糊查询

通过正则表达式实现模糊查询。

5.4 排序和分页

db.user.find().sort({_id: -1});
db.user.find().skip(3).limit(3);

5.5 去重

db.user.distinct('name');

5.6 指定字段返回

db.user.find({_id: {$gt: 5}}, {name: 1});
db.user.find({_id: {$gt: 5}}, {name: 0});

六、$type 操作符

$type 操作符用于基于 BSON 类型检索数据。支持数据类型包括 String、Integer、Boolean、Double、Array、Timestamp、Object、Null、Symbol、Date、ObjectId、Binary Data、Code、Regular Expression 等。

转载地址:http://gdffk.baihongyu.com/

你可能感兴趣的文章
MyBatis学习总结(9)——使用MyBatis Generator自动创建代码
查看>>
MyBatis学习总结(7)——Mybatis缓存
查看>>
MyBatis学习总结(6)——调用存储过程
查看>>
MyBatis学习总结(4)——解决字段名与实体类属性名不相同的冲突
查看>>
MyBatis学习总结(2)——使用MyBatis对表执行CRUD操作
查看>>
MyBatis学习总结(27)——Mybatis-Plus使用小技巧
查看>>
MyBatis学习总结(26)——Mybatis源码中使用了哪些设计模式?
查看>>
Mybatis-@MapperScan和mybatisscan分析
查看>>
mybatis
查看>>
MybaisPlus的Mapper.xml中,数据库中的字段是Mybatis中的关键字如何处理---SpringCloud工作笔记185
查看>>
Mobx 结合 TypeScript 实现 setState 类型推导
查看>>
MyAdapter代码复用工具类
查看>>
Mock 工具使用:弱网测试
查看>>
Mock+Proxy在SDK项目的自己主动化測试实战
查看>>
Mock.js 的语法规范
查看>>
Mock.js 的语法规范学习
查看>>
my97日期控件插件的开发与编写
查看>>
mockcpp & testngpp在2010.7~11月的改进
查看>>
Mock在接口测试中的实际应用
查看>>
Mock技术在JAVA微服务单元测试中的应用
查看>>