MongoDB基本操作(安装+CRUD)

【MongoDB】--MongoDB的crud操作 一般使用mongodb存储非结构化数据,因此,除了常见的数字类型、String等外,还有数组等复杂格式。查询方式有常见对象/数组等查询、aggregate聚合查询,下面将具体介绍各类查询。 阅读详情

一、mongoDB基本概念

mongoDB是什么

        mongoDB是NoSQL非关系型数据库,在mongoDB中,一条记录被称作一个文档(document),类似于一个JSON对象,文档由field:value的键值对形式组成,其中value也可以是一个文档,形成一个层层嵌套的格式。

和MySQL相对的概念

MongoDBMySQL描述
DatabaseDatabase数据库
CollectionTable

表格

DocumentRow行

     

二、mongoDB安装(windows的zip版本)

mongoDB安装

1.社区版下载地址:https://www.mongodb.com/try/download/community

2.选择package为zip

 3.下载到本地后解压,进入到bin页面

(1)直接运行mongod.exe,会报错

Data directory D:\\data\\db\\ not found. Create the missing directory or specify another path using (1) the --dbpath command line option, or (2) by adding the 'storage.dbPath' option in the configuration file.

原因是mongoDB需要一个存放数据的文件夹,默认是/data/db(在linux环境下也有这个问题),解决办法有两个,对于windows环境,一是在当前盘下创建/data/db文件夹;二是在运行时指定数据存放路径,如下,即可启动成功。

mongod.exe -dbPath D:\xxx\data

(2) 支持远程连接。启动成功后,使用mongosh去连接服务,会发生连接不上的情况,原因如日志所示:

This server is bound to localhost. Remote systems will be unable to connect to this server. Start the server with --bind_ip <address> to specify which IP addresses it should serve responses from, or with --bind_ip_all to bind to all interfaces. If this behavior is desired, start the server with --bind_ip 127.0.0.1 to disable this warning

意思是需要在启动时绑定IP地址,如果希望不限制任何机器来连接,可以绑定为0.0.0.0

mongod.exe -dbpath D:\xxx\data --bind_ip 0.0.0.0

如果只需要在本地连接,可以绑定为127.0.0.1,本地启动客户端连接即可成功。

mongod.exe -dbpath D:\xxx\data --bind_ip 127.0.0.1

mongosh安装

1.介绍。在老版本中,一般下载的mongoDB的zip版本,解压后会在bin目录下发现一个mongo.exe程序,这个是用来连接mongoDB的客户端。但是6.0版本后,不会再附带这个客户端,而是建议使用mongosh来连接。

2.社区版下载地址:https://www.mongodb.com/try/download/shell

3.下载到本地,解压,进入到bin目录下。会发现一个mongosh.exe程序。运行该程序即可连接mongoDb,默认情况下连接的地址为127.0.0.1,端口27017。可以主动指定地址和端口,此时命令行如下:

mongosh.exe 127.0.0.1:27017

数据测试

进入客户端之后,输入show dbs,可以查看所有数据库。

三、基本操作(CRUD)

前提:本文创建一个数据库db_mongo,并创建一个集合preview,演示mongoDB操作方式。

1.查看及创建数据库

(1)查看所有的数据库: show dbs

test> show dbs;
admin   40.00 KiB
config  60.00 KiB
local   72.00 KiB

(2)查看当前所在的数据: db

test> db
test

 (3) 创建数据库:use <数据库名>,如果该数据库存在,会切换到该数据库;如果该数据库不存在,则会自动创建该数据库并切换到该数据库。

test> use db_mongo
switched to db db_mongo

2. Insert 新增

        新增文档时,使用db.collection.insertOne()插入单条记录,或者使用db.collection.insertMany()插入多条记录,如果集合不存在,则会自动在当前数据库下创建该集合(如果没有切换到某个数据库,默认在test数据库下)。

 (1) 插入单条:

db.preview.insertOne(
  {
    name: "张三",
    sex: "男",
    hobbies: ["骑行","电影"],
    age: 18,
    city: "成都",
	major:"计算机科学"
  }
)

(2) 插入多条:

db.preview.insertMany(
  [
  {
    name: "李四",
    sex: "男",
    hobbies: ["游泳","电影"],
    age: 20,
    city: "北京",
	major:"电子技术"
  },
  {
    name: "张无极",
    sex: "男",
    hobbies: ["音乐","跑步"],
    age: 25,
    city: "上海",
	major:"计算机科学"
  },
  ]
)

(3) 用户自定义_id字段:

在mongoDB中,每条记录都必须有一个_id字段唯一标识该文档,如果插入时未传入则会自动生成,否则使用传入的_id,例如:

db.preview.insertOne(
  {
	_id:"112233",
    name: "张三",
    sex: "男",
    hobbies: ["骑行","电影"],
    age: 18,
    city: "成都",
	major:"计算机科学"
  }
)

   结果:insertedId不是mongoDB内置的ObjectId类型,而是传入的类型。

{ acknowledged: true, insertedId: '112233' }

3.Query查询

 (1) 查询语句为db.collection.find()。括号内不传值时查询该集合所有数据:

db.preview.find()

  (2) 等值查询。查询字段等值数据,格式

{<filedName>:<fieldValue>,...}

        查询name为"张三"的数据:

db.preview.find({name:"张三"})

 (3) 操作符匹配。格式如下:

{ <field1>: { <operator1>: <value1> }, ... }

        其中,fileld1代表匹配的字段名,operator1代表匹配操作符,如$gt,$lt,$in等,value1代表匹配的值,可以是一个数组。

        例1: 查询age大于19的记录

db.preview.find({age:{$gt:19}})

        例2:查询city在"上海"或"成都"的记录

db.preview.find({city:{$in:["成都","上海"]}})

(4) 多条件的与并(AND/OR)匹配。

        与匹配(AND):要求各个条件都满足,其中value也可以是操作符匹配格式{<operator1>: <value1>}。

{<field1>:<value1>,<field2>:<value2>,...}

        例:查询city在"上海" 且 age大于19的记录

db.preview.find({city:"上海",age:{$gt:19}})

       或匹配(OR):

{$or: [ { <filed1>: <value1> }, { <field2>: <value2> },{<field3>: <value3>},... ]}

      例: 查询city在"上海" 或 age大于20的记录

db.preview.find({$or:[{city:"上海"},{age:{$gt:19}}]})

4. Update修改

(1) mongoDB修改的语法:

db.collection.updateOne(<filter>, <update>, <options>)
db.collection.updateMany(<filter>, <update>, <options>)
db.collection.replaceOne(<filter>, <update>, <options>)

       filter为匹配的条件,类似于SQL语句where后面的部分,update为修改的操作,options为可选项。

(2) 把name为"张三"的记录city字段改成"深圳":

db.preview.updateOne(
	{name:"张三"},
	{
		$set:{
			city:"深圳"
		}
	}
)

注:使用updateOne()时,尽管有多个记录/文档与条件匹配,只会修改第一个,如果想要把修改作用到所有符合条件的记录上,可以使用updateMany()方法:

db.preview.updateMany(
	{name:"张三"},
	{
		$set:{
			city:"深圳"
		}
	}
)

(3)把name为"张无极"的记录/文档替换成另外的内容:

db.preview.replaceOne(
	{name:"张无极"},
	{
		name:"张三一",
		sex: '男',
		hobbies: [ '篮球', '跑步' ],
		age: 23,
		city: '广州',
		major: '通信',
		birth_day: new ISODate("2022-01-20")
	}
)

注:替换文档,会把所有除_id字段的其他内容全部替换,但是不能修改_id的值,如果此时传入_id试图覆盖原本的_id值,则会抛出异常:

After applying the update, the (immutable) field '_id' was found to have been altered to _id: "xxxx"

5. Delete 删除

(1)删除的格式:

db.collection.deleteMany()
db.collection.deleteOne()

  其中,括号内可以传入条件,deleteMany()删除所有符合条件的文档;deleteOne()只会删除一条符合条件的文档。

(2)删除city在"深圳"且岁数小于19岁的记录:

例1:删除一条

db.preview.deleteOne({
	city:"深圳",
	age:{$lt:19}
})

例2:删除所有符合条件的记录

db.preview.deleteMany({
	city:"深圳",
	age:{$lt:19}
})

Windows 下 MongoDB ZIP 版本安装指南 通过以上步骤,您可以在 Windows 系统上成功安装并使用 MongoDB 的 ZIP 版本。将 MongoDB 注册为 Windows 服务后,您可以更方便地管理和使用数据库。MongoDB 的灵活性和高性能使其成为开发和生产环境中的理想选择。希望本文对您有所帮助,如果您在安装过程中遇到任何问题,欢迎在评论区留言讨论。 阅读详情

相关推荐

Windows环境下MongoDB解压版安装教程

由于工作需要,要在Windows server 2016环境下安装MongoDB,MongoDB在Windows环境下有两个版本,安装版和压缩版,安装板在服务器上安装到最后总报权限不足,忽略之后数据库无法使用,在网上找了很多4.0版的安装教程都没有解决问题,所以转用解压版的安装。 安装版本:mongodb-win32-x86_64-2008plus-ssl-4.0.2.zip。 安装步骤: ...

唐震宇的博客 3024

(nodejs )mongodb 更新数据失败... MongoError: After applying the update to the document {_id

MongoError: After applying the update to the document {_id: "895f2731-2122-11 e9-8ed4-a30d938050f7" , ...}, the (immutable) field '_id' was found to have been altered to _id: "751c9c90-229d-11e9-826 a...

paj123456789的博客 5014

MongoDB初学,MongoDB安装步骤,MongoDB基础笔记,增删改查(CRUD)语法

MongoDB初学,MongoDB安装步骤,MongoDB基础笔记,增删改查(CRUD)语法数据库简介1. 为什么要学数据库2. 什么是数据库3. 数据库能干嘛4. 数据库的种类与选择MongoDB简介1. 什么是MongoDB2. MongoDB能干嘛3. 去哪里下载MongoDB4. 安装步骤1. 下载 https://www.mongodb.com/try/download/community2. 解压3. 创建服务4. 启动服务5. 登陆(验证是否安装成功)MongoDB基本操作1. 基本概念2.

qq_41497756的博客 1181

【MongoDB】This server is bound to localhost. Remote systems will be unable to connect to this server.

由于之前写了学习博客,暴露了自己服务器的IP,导致自己的服务器被黑客攻击,隔三差五删我的数据库。终于有一天,不能忍受,想着改一下数据库的接口,修改了配置文件后启动‘mongod’,发现和以前的界面不一样,我的mongo的版本是4.0.17,环境是centOs7,正常可以全局用‘mongo’启动数据库,这个时候不但报错 且用mongod手工启动的时候,会有很多警告,其中一条就是这个: 不知道怎么...

Hhalcyon的博客 5114

【MongoDB-安装指南】Windows 安装 MongoDB 的详细教程(最新)

MongoDB 是一个基于文档的 NoSQL 数据库,由 MongoDB Inc. 开发。NoSQL,指的是非关系型的数据库。NoSQL有时也称作 Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。MongoDB使用集合(Collections)来组织文档(Documents),每个文档都是由键值对组成的。存储数据的容器,类似于关系型数据库中的数据库。数据库中的一个集合,类似于关系型数据库中的表。

大家好,我是敖云岚,一个沉迷代码的 “技术玩家”。擅长 Java、C++ 开发,对 MySQL、Redis、RabbitMQ 等技术也颇有研究。博客里既有硬核技术干货,也有诙谐幽默的编程日常分享。愿和你一起,笑着学技术,快乐敲代码! 1313

软件测试--用例篇(测试用例的好处、测试用例的七种设计方法、测试用例的粒度、测试用例的评价)

作为软件测试工程师,最主要的工作就是:编写测试用例,那么为什么要编写测试用例?它有什么好处?如何编写测试用例?测试用例写简单好还是复杂好?如何评价测试用例的质量? 天呐撸!能说不会吗?! 作为倾向软件测试工程师的老铁们,还是一起来学习吧! 一、编写测试用例的好处 测试用例是测试者的依据 测试用例使得工作可重复,是自动化测试的基础 补充:自动化测试的前提条件是:功能比较稳定,页面...

cherrydreamsover的博客 3734

CentOS7.5安装MongoDB4.0与CRUD基本操作

一 MongoDB简介 MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 MongoDB中的记录是一个文档,它是由字段和值对组成的数据结构。MongoDB文档类似于JSON对象。字段的值可...

dengshuabi6933的博客 202

中兴OLT配置实战:从零开始,手把手教你完成一个HGU的完整业务开通(含DBA模板、限速与远程升级)

本文详细介绍了中兴OLT配置实战,从零开始手把手教你完成HGU的完整业务开通,包括DBA模板设计、限速与远程升级等关键步骤。通过实际案例和详细命令,帮助工程师快速掌握GPON网络配置技巧,提升运维效率。

weixin_30599769的博客 348

Centos安装mongodb

/ 查看当前是否是主节点 rs.conf();// 删除一个节点 rs.add("ip:port");启动多个实例备用 mongod -f /mongodb/38017/conf/mongod.conf mongod -f /mongodb/38018/conf/mongod.conf mongod -f /mongodb/38019/conf/mongod.conf mongod -f /mongodb/38020/conf/mongod.conf netstat -lnp|grep 380。

weixin_57468544的博客 1296

从零理解域随机化:通过Isaac Lab的events.py掌握Sim-to-Real关键技术

本文深入解析域随机化技术如何通过Isaac Lab的events.py实现Sim-to-Real迁移,提升机器人策略在真实世界的鲁棒性。从刚体属性到环境条件的系统级随机化,详细介绍了工程实践中的关键参数配置与调试技巧,帮助开发者有效缩小仿真与现实的差距。

weixin_29062613的博客 260

[Adaptive Autosar]深入理解--Time Synchronization

目录 1.TS典型应用场景 2.CP和AP时间同步对比 3.时间同步基础知识 4.TBR部分参数说明 5. TS功能说明 5.1 基本说明 5.2 时间纠正计算说明 5.3 时间验证 Time Synchronization 时间同步,后面简称TS 1.TS典型应用场景 时间同步,典型应用就是在自动驾驶领域,自动驾驶领域涉及到各个传感器的数据采集,如IMU采集当前车身姿态和运动信息,毫米波雷达-超声波雷达-环视摄像头-前视摄像头...等等传感器捕获的数据,在算法中需要精确知道每个数.

AgingMoon的博客 3997

[MongoDB]Mongodb攻略

-------------------------------------------------------------------------------------------- 【基础】 1. 安装: wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.0.7.tgz tar zx...

dilunzhuang0924的博客 212

《计算机网络》课程大作业- 《小区局域网的设计和规划》

8.1首先,在满足用户需求方面,通过详细的需求分析,充分考虑了居民和物业管理的不同业务需求。对于居民,无论是日常的高清视频播放、在线游戏、远程办公还是智能家居设备的连接,网络都能提供稳定的高速带宽支持。从有线网络的千兆以太网技术保障稳定的有线连接,到无线网络采用 Wi - Fi 6 技术确保无线覆盖区域的高速和低延迟,满足了居民多样化的娱乐和生活需求。对于物业管理,安防监控系统的实时数据传输、物业办公自动化系统的流畅运行以及社区信息的及时发布等业务,都有针对性的网络设计。

lisangsimida的博客 2598

MongoDB笔记(1)

文章目录一MongoDB简介1.MongoDB是什么2.种类 (了解):二 MongoDB安装三.MongoDB基本操作1.基本概念2.查看数据库3.选择数据库 !!!4.查看集合5.创建集合6.删除集合7.小总结4.MongoDB文档增删修查(CURD)1.C增2.R查3.U改 一MongoDB简介 1.MongoDB是什么 2.种类 (了解): 关系型: Oracle,MySQL,SQLite,SQL Server 等 非关系型: (Not Only SQL) : Mongo.

qq_63339948的博客 448

边缘智能新篇章:RK3588上YOLOv8姿态估计的轻量化部署与性能优化实战

本文详细介绍了在RK3588平台上部署和优化YOLOv8姿态估计模型的完整流程。通过模型转换、ONNX中间表示和性能优化策略,实现在边缘设备上的高效实时推理,为嵌入式AI应用提供可行的轻量化解决方案。

ik6789012的博客 151

YOLOP v2!YOLOv7结合YOLOP的多任务版本 更好、更快、更强

YOLOP v2!YOLOv7结合YOLOP的多任务版本 更好、更快、更强

jacke121的专栏 2705

mongodb之安装入门使用

⼀、MongoDb的体系结构 1、NoSql的概念 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是 SQL ”,互联⽹的早期我们的数据⼤多以关系型数据库来存储的。其特点是规范的数据结构(预定义模式)、强⼀⾄性、表与表之间通过外键进⾏关联,这些特征使我们对数据的管理更加清晰和严谨,但随着互联⽹的发展数据成爆炸式的增⻓我们对数据库需要更好的灵活性和更快的速度。这就是NoS...

Eflyings的博客 413

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

MongoDB数据库从基础入门到高级出师【更新中】

一、MongoDB安装 主要讲一下Windows安装 二、MongoDB基本操作 # 基本概念 生活中:仓库、架子、物品 计算机:数据库(database)、集合(collection)、数据\文档(document) # 查看数据库 语法:show databases 效果: # 选择数据库 语法:use 数据库名 效果: 隐式创建:在mongodb选择不存在的数据库不会报错,后期当该数据库有数据时,系统自动创建。 # 查看集合 语法:show collections 效果: # 创建集合 语法:.

姚先生的全栈之路 1293

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Mongodb 与 Redis 调教

(一)安装连接   安装方法: pip install pymongo   在 C盘的 program file 找到 mongod.exe 运行,然后发现运行不起。根据提示在 C 盘下创建 /data/db 文件夹后就可以成功运行了。   可视化软件: 推荐使用 Robomongo,安装打开后,创建连接即可。 (二)基本操作   连接数据库的套路程序: ...

weixin_30505043的博客 345

MongoDB

MongoDB 是在2007年由DoubleClick公司的几位核心成员开发出的一款分布式文档数据库,由C++语言编写。目的是为了解决数据大量增长的时候系统的可扩展性和敏捷性。MongoDB要比传统的关系型数据库简单很多。在MongoDB中数据主要的组织结构就是数据库、集合和文档,文档存储在集合当中,集合存储在数据库中。MongoDB中每一条数据记录就是一个文档,数据结构由键值(key=>value)对组成。文档类似于 JSON 对象,它的数据结构被叫做BSON。

m0_69303392的博客 757

MongoDB学习

1. 数据库分类2. MongoDB简介3. MongoDB下载及安装过程3.1 MongoDB下载3.2 MongoDB安装过程3.3 MongoDB图像化工具4. MongoDB的基本操作4.1 基本概念4.2 基本指令4.3 数据库的CRUD的操作4.3.1 向数据库中插入文档4.3.2 查询数据库中的文档4.3.3 修改数据库中的文档4.3.4 删除数据库的文档5. MongoDB文档间的关系6. MongoDB投影和_sort7. mongoose简介7.1 mongoose概念7.2 mong.

qq_52476758的博客 915

MongoDB 6 安装 & 基本操作

mongodb6 社区版安装 以及基本操作

u013433591的博客 2314

java mongodb开源框架_用MongoDB和Spring Data创建Java应用

【IT168专稿】当前,NOSQL时代其实已经来临,在NOSQL的大家族中,MongoDB以其可扩展性强,性能高以及开源占据了重要的地位。在MongoDB中,存储数据的方式不再是关系型数据库,而是以象JSON格式那样进行存储,所以可以称为文档型的NOSQL。本文将以一个实际的例子,介绍如何运用Spring开源框架下的Spring Data数据存取框架结合MongoDB,创建一个简单的CRUD应用...

weixin_28952093的博客 349

Mongodb下载及安装配置

Mongo DB 是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式备受当前IT从业人员的青睐。Mongo DB很好的实现了面向对象的思想(OO思想),在Mongo DB中 每一条记录都是一个Document对象。Mongo DB最大的优势在于所有的数据持久操作都无需开发人员手动编写SQL语句,直接调用方法就可以轻松的实现CRUD操作。     首先要下载mongo

窗前废雨 669

【转】小试MongoDB及Java的CRUD

小试MongoDB及Java的CRUD 小试MongoDB及Java的CRUD http://www.cnblogs.com/varlxj/archive/2010/03/12/1684181.html   最近刚做好一个站,基于rails 3,教程为主,大家捧场看看,谢谢!www.yo945.com 看过JavaEye的Robbin的《NoSQL数据库探讨之一 - 为什么要...

狼之梦---爱乌及屋 120
上一篇: 理解RSA算法原理
下一篇: JAVA从业者经典书籍-涵盖各个公司面试
GetterAndSetter
博客等级 码龄9年 17粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值