首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MongoDB基本用法

MongoDB基本用法

作者头像
顾翔
发布于 2024-09-10 08:21:15
发布于 2024-09-10 08:21:15
10700
代码可运行
举报
运行总次数:0
代码可运行

1,基本操作

1.1切换数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
test>use admin
switched to db admin
admin>

1.2建立用户

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin> db.createUser({user:"jerry", pwd:"123456", roles: ["root"]})

jerry:用户名

123456:密码

root:角色

{ ok: 1 }

1.3显示用户

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin> show users
[
  {
    _id: 'admin.jerry',
    userId: UUID('a86e9f3d-598e-4cbf-9419-4fa459f6773b'),
    user: 'jerry',
    db: 'admin',
    roles: [ { role: 'root', db: 'admin' } ],
    mechanisms: [ 'SCRAM-SHA-1', 'SCRAM-SHA-256' ]    
  }
]

2数据库操作

2.1 进入数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
use db_name

比如切换到mongo数据库,如果该数据库不存在,会自动创建

2.2 显示数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin> db
admin

2.3删除数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin> db.dropDatabase()

2.4 查看所有数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin> show dbs
admin   132.00 KiB
config   92.00 KiB
local    40.00 KiB
admin> show databases
admin   132.00 KiB
config   92.00 KiB
local    40.00 KiB

2.5查看数据库版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin> db.version()    
7.0.14

3集合操作

3.1创建集合

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin> db.createCollection(name, options)

集合相当于普通数据库的表

一般不需要使用这个命令,因为在往集合里添加数据时,如果集合不存在会自动创建

options参数的可选值:

参数

说明

capped

是否固定集合大小,设置为true时,当集合元素达到设定的值时会覆盖最老的数据

size

设置集合数据大小

max

指定固定集合中最大文档数量

3.2删除集合

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin> db.collection_name.drop()

案例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin>show tabless
person
user
admin> db.person.drop()
admin>show tabless
user

查看当前数据库所有集合

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin> show collections    
system.users
system.version
admin>

4文档操作

4.1 添加操作

4.1.1 insert

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin>db.person.insert({"name": "Jerry"});
DeprecationWarning: Collection.insert() is deprecated. Use insertOne, insertMany, or bulkWrite.
{
  acknowledged: true,
  insertedIds: { '0': ObjectId('66d7de35f5f38e175c5e739c') }
}
admin>

4.1.2 insertOne

往集合里添加一条数据,同insert

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin>db.person.insertOne({"name": "Tom", age: 37});
{
  acknowledged: true,
  insertedId: ObjectId('66d7decaf5f38e175c5e739d')
}

4.1.3往集合里一次性添加多条数据 (insertMany )

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin>db.person.insertMany([{"name": "Cindy", age: 43}, {"name": "Linda", age: 21}, {"name": "Jessca", age: 30}]);
{
  acknowledged: true,
  insertedIds: {
    '0': ObjectId('66d7df39f5f38e175c5e739e'),
    '1': ObjectId('66d7df39f5f38e175c5e739f'),
    '2': ObjectId('66d7df39f5f38e175c5e73a0')
  }
}

5查询操作

5.1无条件查询

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin>db.person.find()
[
  { _id: ObjectId('66d7de35f5f38e175c5e739c'), name: 'Jerry' },
  { _id: ObjectId('66d7decaf5f38e175c5e739d'), name: 'Tom', age: 37 },
  { _id: ObjectId('66d7df39f5f38e175c5e739e'), name: 'Cindy', age: 43 },
  { _id: ObjectId('66d7df39f5f38e175c5e739f'), name: 'Linda', age: 21 },
  {
    _id: ObjectId('66d7df39f5f38e175c5e73a0'),
    name: 'Jessca',    
    age: 30
  }
]

5.2带条件的查询

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin>db.person.find({"name": "Jerry"})
[ { _id: ObjectId('66d7de35f5f38e175c5e739c'), name: 'Jerry' } ]

5.3字段排序

升序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin>db.person.find().sort({age: 1});
[
  { _id: ObjectId('66d7de35f5f38e175c5e739c'), name: 'Jerry' },
  { _id: ObjectId('66d7df39f5f38e175c5e739f'), name: 'Linda', age: 21 },
  {
    _id: ObjectId('66d7df39f5f38e175c5e73a0'),
    name: 'Jessca',
    age: 30
  },
  { _id: ObjectId('66d7decaf5f38e175c5e739d'), name: 'Tom', age: 37 },
  { _id: ObjectId('66d7df39f5f38e175c5e739e'), name: 'Cindy', age: 43 }
]

降序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin>db.person.find().sort({age: -1});    
[
  { _id: ObjectId('66d7df39f5f38e175c5e739e'), name: 'Cindy', age: 43 },
  { _id: ObjectId('66d7decaf5f38e175c5e739d'), name: 'Tom', age: 37 },
  {
    _id: ObjectId('66d7df39f5f38e175c5e73a0'),
    name: 'Jessca',
    age: 30
  },
  { _id: ObjectId('66d7df39f5f38e175c5e739f'), name: 'Linda', age: 21 },
  { _id: ObjectId('66d7de35f5f38e175c5e739c'), name: 'Jerry' }
]

5.4查询分页

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin>db.person.find().skip(0).limit(3)
[
  { _id: ObjectId('66d7de35f5f38e175c5e739c'), name: 'Jerry' },
  { _id: ObjectId('66d7decaf5f38e175c5e739d'), name: 'Tom', age: 37 },
  { _id: ObjectId('66d7df39f5f38e175c5e739e'), name: 'Cindy', age: 43 }
]

等价于

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin>db.person.find().limit(3)
[
  { _id: ObjectId('66d7de35f5f38e175c5e739c'), name: 'Jerry' },    
  { _id: ObjectId('66d7decaf5f38e175c5e739d'), name: 'Tom', age: 37 },
  { _id: ObjectId('66d7df39f5f38e175c5e739e'), name: 'Cindy', age: 43 }
]

跳过两条记录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin> db.person.find().skip(2);
[
  { _id: ObjectId('66d7df39f5f38e175c5e739e'), name: 'Cindy', age: 43 },
  { _id: ObjectId('66d7df39f5f38e175c5e739f'), name: 'Linda', age: 21 },
  {
    _id: ObjectId('66d7df39f5f38e175c5e73a0'),
    name: 'Jessca',
    age: 30
  }
]

5.5比较操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin> db.person.find({age: {$gte:30 }})
[
  { _id: ObjectId('66d7decaf5f38e175c5e739d'), name: 'Tom', age: 37 },
  { _id: ObjectId('66d7df39f5f38e175c5e739e'), name: 'Cindy', age: 43 },
  {
    _id: ObjectId('66d7df39f5f38e175c5e73a0'),
    name: 'Jessca',    
    age: 34
  }
]
  • $gte:大于等于(Greater Than or Equal to)
  • $lt:小于(Less Than)
  • $lte:小于等于(Less Than or Equal to)
  • $gt:大于(Greater Than)

5.6更多查询方式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin> db.person.find({name: {$eq: "Jerry"}})
admin> db.person.find({name: {$eq: "Jerry"}})
[ { _id: ObjectId('66d7de35f5f38e175c5e739c'), name: 'Jerry' } ]
admin> db.person.find({name: {$eq: "jerry"}})
           
admin>

说明:大小写敏感

6更新操作

6.1 update

这个命令的第三个参数是一个可选的选项

  • upsert:如果不存在update的记录,是否插入新的记录。默认false,不插入
  • multi:是否按条件查询出的多条记录全部更新。默认false,只更新找到的第一条记录
  • writeConcern:决定一个写操作落到多少个节点上才算成功。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin>db.person.find()
[
  { _id: ObjectId('66d7de35f5f38e175c5e739c'), name: 'Jerry' },
  { _id: ObjectId('66d7decaf5f38e175c5e739d'), name: 'Tom', age: 37 },
  { _id: ObjectId('66d7df39f5f38e175c5e739e'), name: 'Cindy', age: 43 },
  { _id: ObjectId('66d7df39f5f38e175c5e739f'), name: 'Linda', age: 21 },
  {_id: ObjectId('66d7df39f5f38e175c5e73a0'),name: 'Jessca',age: 30
  }
]
admin> db.person.update({name: 'Jerry'},{$set:{name: 'Jerry',age: 28}}, {multi:true})
DeprecationWarning: Collection.update() is deprecated. Use updateOne, updateMany, or bulkWrite.
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}
admin>db.person.find()
[    
  { _id: ObjectId('66d7de35f5f38e175c5e739c'), name: 'Jerry', age: 28 },
  { _id: ObjectId('66d7decaf5f38e175c5e739d'), name: 'Tom', age: 37 },
  { _id: ObjectId('66d7df39f5f38e175c5e739e'), name: 'Cindy', age: 43 },
  { _id: ObjectId('66d7df39f5f38e175c5e739f'), name: 'Linda', age: 21 },
  {
    _id: ObjectId('66d7df39f5f38e175c5e73a0'),
    name: 'Jessca',
    age: 30
  }
]

6.2更新单条数据(updateOne)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin>db.person.updateOne({_id: ObjectId("66d7df39f5f38e175c5e73a0")}, {$set: { age: 34}})
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}

6.3更新多条数据(updateMany)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin>db.person.updateMany(      
  { name: "Cindy " },             // 查询条件  
  { $set: { age: 32 } }             // 更新操作  
)
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 0,
  modifiedCount: 0,
  upsertedCount: 0
}

6.4替换一条数据(replaceOne)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
replaceOne 会用新的文档完全取代旧的文档,包括 _id 字段。如果新的文档中没有 _id 字段或 _id 字段值与旧的不同,会导致文档被赋予新的 _id。
admin>db.person.replaceOne(  
  { "name": " Jerry " },  // 过滤条件  
  { "_id": ObjectId('66d7de35f5f38e175c5e739d'), "name": "Jerry", "age": 24},  // 新的文档  
  { upsert: true }  // 使用 upsert 选项  
);
{
  acknowledged: true,
  insertedId: '66d7de35f5f38e175c5e739c',    
  matchedCount: 0,
  modifiedCount: 0,
  upsertedCount: 1
}
admin> db.person.find()
[
  { _id: ObjectId('66d7de35f5f38e175c5e739c'), name: 'Jerry', age: 28 },
  { _id: ObjectId('66d7decaf5f38e175c5e739d'), name: 'Tom', age: 37 },
  { _id: ObjectId('66d7df39f5f38e175c5e739e'), name: 'Cindy', age: 43 },
  { _id: ObjectId('66d7df39f5f38e175c5e739f'), name: 'Linda', age: 21 },
  {
    _id: ObjectId('66d7df39f5f38e175c5e73a0'),
    name: 'Jessca',
    age: 34
  },
  { _id: ObjectId('66d7de35f5f38e175c5e739d'), name: 'Jerry', age: 24 }
]

7删除操作

7.1删除一条记录(deleteOne)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin> db.person.deleteOne({name: 'Jerry', age: 24})
{ acknowledged: true, deletedCount: 1 }

7.2删除多条(deleteMany)

7.2.1 无条件删除(deleteOne)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin>db.collection.deleteMany()

7.2.2带条件删除(deleteOne)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
admin>db.collection.deleteMany({name: "Jerry"})

8关闭MongoDB

8.1关闭方式一

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bin/mongod --port=27017 --dbpath=/etc/mongodb/data --shutdown

8.2关闭方式二

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
use admin
db.shutdownServer()

8.3关闭方式三

通过kill进程来关闭

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ps -ef | grep mongodb
kill PID
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
uni-app弹窗多选样式分享
分享一个uniapp弹层多选样式 *弹层依赖uniapp-popup组件 html <uni-popup :show="show" type="bottom" :custom="true" :mask-click="false"> <view class="pop"> <view class="btns"> <view class="pop-button cancel" @click="cancel()">取消</view> <view class="pop-butt
薛定喵君
2020/03/26
2.2K2
uni-app弹窗多选样式分享
【Uni-App社区小程序】011-flex布局
参考教程(阮一峰的flex教程):http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html
訾博ZiBo
2025/01/06
2090
【Uni-App社区小程序】011-flex布局
【说站】css中justify-content属性是什么
2、应用在弹性容器上,把弹性项沿着弹性容器的主轴线(main axis)对齐。该操作发生在弹性长度以及自动边距被确定后。
很酷的站长
2022/11/24
7390
【说站】css中justify-content属性是什么
【Uni-App社区小程序】010-uni-app的css3选择器
https://uniapp.dcloud.net.cn/frame?id=%e9%80%89%e6%8b%a9%e5%99%a8
訾博ZiBo
2025/01/06
1150
【Uni-App社区小程序】010-uni-app的css3选择器
uni-app实战之社区交友APP(3)Vue.js和uni-app基础
本文主要介绍了uni-app和Vue的基础使用: 基础组件的使用,CSS选择器的类型,flex布局的常见用法; 数据渲染、条件渲染、列表渲染,class和style的动态绑定; 事件处理的绑定,属性的监听和计算属性。
cutercorley
2021/01/29
2.6K0
【Uni-App社区小程序】014-条件渲染
v-if是一个条件判断,当条件为true的时候就会渲染当前标签,也就是条件渲染的的意思;
訾博ZiBo
2025/01/06
1390
【Uni-App社区小程序】014-条件渲染
uni-app(3.flex布局)
在pages下新建页面flex-direction,并在pages.json中将flex-direction页面设为首页
玩蛇的胖纸
2021/06/24
1.8K0
6.页面绘制-帖子列表页和前端路由
在pages/shequ目录下新建页面tiezi。然后在pages.json中将tiezi配置为首页,方便观察调试。
玩蛇的胖纸
2021/07/13
5370
【Uni-App社区小程序】013-Class 与 Style 绑定
https://uniapp.dcloud.net.cn/use?id=class-%e4%b8%8e-style-%e7%bb%91%e5%ae%9a
訾博ZiBo
2025/01/06
1770
【Uni-App社区小程序】013-Class 与 Style 绑定
微信小程序----Maide List(图文列表)(flex布局实现MUI的图文列表)
1、使用flex进行布局要注意兼容性,所以采用:display: -webkit-flex;display: flex; 2、为了保证每排三个图标的两对对齐,采用:justify-content: space-between; 3、order的值的大小,决定着该子元素的位置; 4、每个子元素设置flex: 0 0 auto;否则某个子元素超出,会改变其他元素大小!
Rattenking
2021/02/01
1.2K0
微信小程序----Maide List(图文列表)(flex布局实现MUI的图文列表)
flex的兼容性处理问题
flex 很好用但是有兼容性问题。 .flex { display: -webkit-box; /* 老版本语法: Safari, iOS, Android browser, older WebK
用户4344670
2019/11/05
1.4K0
vue消息提示组件封装
代码已上传至github github代码地址:https://github.com/Miofly/mio.git
用户10106350
2022/10/28
4180
uni-app学习
1. 学习uni-app 1.1. 概述 号称一次编写多端运行的前端框架,架构图如下 对某些不同平台的特殊功能,可以通过条件进行自动编译,也就是写两套代码,不同的环境会选择不同代码编译 1.2. 推荐
老梁
2019/09/10
1.7K0
uni-app学习
Flexbox布局指南
本文翻译来自https://css-tricks.com/snippets/css/a-guide-to-flexbox/
Helloted
2022/06/07
1.5K0
Flexbox布局指南
微信支付成功后,页面被关闭?你少了这个步骤!
大概意思是,以后就不能用这个方式了。如果接入了“点金计划”,你的网页不会被关闭,反之会直接把网页“帮”你关了。
大风写全栈
2024/11/05
1K0
微信支付成功后,页面被关闭?你少了这个步骤!
4.页面绘制-脚本页面和个人中心页面
加入输入框按钮和承载生成小说文本的input框,同时加入一些Gap间隔槽,提升结构美观,构成了脚本页面jiaoben.vue:
玩蛇的胖纸
2021/06/29
1K0
CSS/CSS3常用Style
IE 9 及其之前的版本不支持 flex 属性。IE 10 需要前缀 -ms- 才支持该属性。
White feathe
2021/12/08
4340
CSS/CSS3常用Style
CSS3的flex布局
flex的一些属性 CSS3中引入了另一种框--flexbox,flexbox有一些block和inline不同的性质,比如: 自适应子元素(flex item,又称伸缩项目)的宽度 伸缩项目的float,clear,vertical-align属性失效 不能继承flex框,但可以依次设置 可以修改flex流的方向以及布置规则          现在就大体讲述下这个具体属性的表示含义。 设置flexbox的兼容性   将一个容器设置为flexbox(又称伸缩容器)很简单,但是却存在一些兼容性的问题,比如
欲休
2018/03/15
1.5K0
CSS3的flex布局
微信小程序----Gallery Table(图文表格)(flex布局实现MUI的图文表格)
1、使用flex进行布局要注意兼容性,所以采用:display: -webkit-flex;display: flex; 2、为了保证每排三个图标的两对对齐,采用:justify-content: space-between; 3、父元素必须设置flex-wrap: wrap;进行换行,否则会在一排展示; 4、每个子元素的宽度width: 50%;必须写出,否则会按照其占位大小分配; 5、每个子元素设置flex: 0 0 auto;否则某个子元素超出,会改变其他元素大小!
Rattenking
2021/02/01
1.4K0
微信小程序----Gallery Table(图文表格)(flex布局实现MUI的图文表格)
uni-app首页样式分享
分享一张首页样式 # 首页涉及内容 城市选择、轮播、一些列表 # 预览效果 # 代码 index.vue <template> <view class="page"> <uni-popup :
薛定喵君
2020/08/27
1K0
uni-app首页样式分享
相关推荐
uni-app弹窗多选样式分享
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档