前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MongoDB核心概念与基本操作

MongoDB核心概念与基本操作

作者头像
别团等shy哥发育
发布2023-02-25 14:25:38
1.4K0
发布2023-02-25 14:25:38
举报
文章被收录于专栏:全栈开发那些事

文章目录

1、核心概念

1.1 库

​   mongodb中的库就类似于传统关系型数据库中库的概念,用来通过不同库隔离不同应用数据。mongodb中可以建立多个数据库。每一个库都有自己的集合和权限,不同的数据库也放置在不同的文件中。默认的数据库为"test",数据库存储在启动指定的data目录中。

1.2 集合

​   集合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表的概念

  集合存在于数据库中,一个库中可以创建多个集合。每个集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。

1.3 文档

  文档集合中一条条记录,是一组键值(key-value)对(即 BSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。

一个简单的文档例子如下:

代码语言:javascript
复制
{"site":"www.baizhiedu.xin", "name":"编程不良人"}

1.4 关系总结

RDBMS

MongoDB

数据库

数据库

集合

文档

字段

2、基本操作

2.1 库操作

查看所有库

代码语言:javascript
复制
show databases;
或者
show dbs;
image-20220104234707873
image-20220104234707873

注意:

  • admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
  • local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
  • config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

创建数据库

代码语言:javascript
复制
> use 库名
image-20220104234756693
image-20220104234756693

注意: use 代表创建并使用,当库中没有数据时默认不显示这个库

image-20220104234825204
image-20220104234825204
  • 删除数据库

默认删除当前选中的库

代码语言:javascript
复制
 db.dropDatabase()
image-20211214115339513
image-20211214115339513
  • 查看当前所在库
代码语言:javascript
复制
db;
image-20211217094919116
image-20211217094919116

2.2 集合操作

查看库中所有集合

代码语言:javascript
复制
show collections;
或者
show tables;

创建集合

代码语言:javascript
复制
db.createCollection('集合名称', [options])
image-20220104235143035
image-20220104235143035
image-20220104235155773
image-20220104235155773

options可以是如下参数:

字段

类型

描述

capped

布尔

(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。 当该值为 true 时,必须指定 size 参数。

size

数值

(可选)为固定集合指定一个最大值,即字节数。 如果 capped 为 true,也需要指定该字段。

max

数值

(可选)指定固定集合中包含文档的最大数量。

注意:当集合不存在时,向集合中插入文档也会自动创建该集合。

删除集合

代码语言:javascript
复制
db.集合名称.drop();
image-20220104235319088
image-20220104235319088

2.3 文档操作

代码语言:javascript
复制
参考文档: https://docs.mongodb.com/manual/reference/method/

插入文档

单条文档

代码语言:javascript
复制
> db.集合名称.insert({"name":"编程不良人","age":23,"bir":"2012-12-12"});

多条文档

代码语言:javascript
复制
> db.集合名称.insertMany(
   [ <document 1> , <document 2>, ... ],
   {
 			writeConcern: 1,//写入策略,默认为 1,即要求确认写操作,0 是不要求。
      ordered: true //指定是否按顺序写入,默认 true,按顺序写入。
   }
)
> db.集合名称.insert([
  	{"name":"不良人","age":23,"bir":"2012-12-12"},
  	{"name":"小黑","age":25,"bir":"2012-12-12"}
]);

脚本方式

代码语言:javascript
复制
for(let i=0;i<100;i++){
    db.users.insert({"_id":i,"name":"编程不良人_"+i,"age":23});
}

注意:在 mongodb 中每个文档都会有一个_id作为唯一标识,_id默认会自动生成如果手动指定将使用手动指定的值作为_id 的值。

查询所有

代码语言:javascript
复制
> db.集合名称.find();

删除文档

代码语言:javascript
复制
db.集合名称.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)

参数说明:

  • query :可选删除的文档的条件。
  • justOne : 可选如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
  • writeConcern :可选抛出异常的级别。

更新文档

代码语言:javascript
复制
db.集合名称.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
);

参数说明:

  • query : update的查询条件,类似sql update查询内where后面的。
  • update : update的对象和一些更新的操作符(如
,

inc…)等,也可以理解为sql update查询内set后面的

  • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :可选,抛出异常的级别。
代码语言:javascript
复制
- db.集合名称.update({"name":"zhangsan"},{name:"11",bir:new date()}) 
	`这个更新是将符合条件的全部更新成后面的文档,相当于先删除在更新`
- db.集合名称.update({"name":"xiaohei"},{$set:{name:"mingming"}})
	`保留原来数据更新,但是只更新符合条件的第一条数据`
- db.集合名称.update({name:”小黑”},{$set:{name:”小明”}},{multi:true})		
	`保留原来数据更新,更新符合条件的所有数据`
- db.集合名称.update({name:”小黑”},{$set:{name:”小明”}},{multi:true,upsert:true})
	`保留原来数据更新,更新符合条件的所有数据 没有条件符合时插入数据

这里只是列举了一些简单的mongodb操作,复杂的查询后面单独写篇博客。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1、核心概念
    • 1.1 库
      • 1.2 集合
        • 1.3 文档
          • 1.4 关系总结
          • 2、基本操作
            • 2.1 库操作
              • 2.2 集合操作
                • 2.3 文档操作
                相关产品与服务
                云数据库 MongoDB
                腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档