mongodb删除字段_MongoDB入坑指南

本文介绍了MongoDB的基础,包括NoSQL概念、CAP理论和MongoDB的特点。重点讲解了MongoDB的基本操作,如数据库启动、使用,特别是查询、插入、更新和删除操作。在删除操作部分,提到了如何使用find()和sort()方法进行条件查询和排序,并讨论了删除字段的操作。
摘要由CSDN通过智能技术生成

NoSQL介绍

NoSQL指的是非关系型数据库,相对于传统的关系型数据库,非关系型数据库没有复杂的关系,保证数据的最终一致性而非ACID,这也使得非关系型数据库能承受较高的并发,具有高性能、高可用、高可扩展性的特点。非关系型数据库种类有很多,包括键值型、列存储、文档型、图形数据库等。常见的非关系型数据库有Redis、HBase、MongoDB等。

CAP理论

CAP理论中C指的是Consistency(强一致性),A指的是Availability(可用性),P指的是Partition tolerance(分区容错性)。CAP理论强调,分布式存储系统,强一致性、可用性、分区容错性这三项最多只能保证其中的两项。对于一个分布式的系统,必须要保证分区容错性,因此,能够做出的选择只有CP或者AP,对于本文中所涉及的MongoDB数据库,它所保证的是CP。

76794ef0bec900dc4aa9d9a6d3f6b553.png

MongoDB介绍

MongoDB是为了快速开发互联网Web应用而设计的非关系型数据库系统,其设计目标是极简、灵活、作为Web应用栈的一部分。MongoDB的数据模型是面向文档的,所谓文档是一种类似于JSON的结构,简单理解MongoDB这个数据库中存的是各种各样的JSON(BSON)。
{
  "name": "小猿看看",
  "age": 13,
  "group": ["group1", "group2"]
}
MongoDB数据库中的基本概念包括数据库、集合、文档、域、索引等。
  • 文档(document)类似于JS中的对象,在MongoDB中每一条数据都是一个文档。

  • 集合(collection)集合就是一组文档,类似于数组,也就是集合是用来存放文档的,集合中存储的文档可以是各种各样,没有格式要求。

  • 多个文档组成集合,多个集合组成数据库。

将MongoDB数据库与我们常见的关系型数据库做一个对比。
关系型数据库MongoDB
数据库(database)数据库(database)
表(table)集合(collection)
数据记录行(row)文档(document)
字段(column)域(field)
索引(index)索引(index)
表连接(table joins)
主键(primary key)主键(primary key)
值得说明的是,MongoDB并不支持表连接的操作,在MongoDB中自动会将"_id"字段设置为主键。下图将更加直观的展示MongoDB数据库和关系型数据库的映射关系。

b8b3f84a896a319a985d54a03e75cbbc.png

MongoDB的基本操作

数据库的启动
对于MongoDB的安装,这里就不多做介绍,具体的安装步骤网上都有详细的介绍。 MongoDB安装完成后,就需要进行启动操作,使用以下命令就可以进行启动,MongoDB启动默认占用27017端口。
mongod –f /etc/mongod.conf
这里提一句,如果MongoDB出现了意外停止的情况,那么直接使用该命令进行重启是无法成功的,需要首先将 /data/mongodb/mongo.lock文件删除,才能重新启动。
数据库的基本使
连接MongoDB
mongod
显示所有数据库
show databases
show dbs
进入到指定的数据库
use 数据库名
查看所有集合
show collections
数据库查询操作

MongoDB提供了find()方法用于对文档的查询,默认查找collection下所有文档信息,find()方法可以接收一个对象作为条件参数,查询集合下的所有符合条件的文档。

db..find()
db.stus.find({"name":"小猿看看"}) #查询name为小猿看看的值
db.stus.find({"age":13}).count() #获取一共有几个文档

如果我们想要按照某种顺序对查询的结果进行排序,我们可以使用MongoDB提供的sort()方法进行排序,sort()需要接收一个对象,该对象中键为所要排序的字段,值可以传入1或者-1,分别表示按照升序排序和按照降序排序。

db.stus.find({}).sort({"name": -1})
数据库插入操作
向集合中插入文档,需要使用insert()方法。
db..insert(doc)#向school数据库中的stus集合中插入一个学生对象{"name":"小猿看看","age":13,"gender":"男"}
db.stus.insert({"name":"小猿看看","age":13,"gender":"男"})
向集合中插入多个文档,不能直接将多个对象放入insert()方法,否则只会有第一个对象被插入,而应使用一个数组对象对多个对象进行封装,这样才能成功插入多个对象。
db.stus.insert([
    {"name":"张三","age":13,"gender":"男"},
    {"name":"李四","age":13,"gender":"男"}
])
当我们向集合插入文档时,如果没有给文档指定_id属性,则数据库会自动为文档添加_id,该属性用来作为文档的唯一标识,_id我们可以自己指定,如果我们指定了,数据库就不会添加,_id必须确保唯一。
数据库更新操作
对数据库进行更新操作需要使用到update()方法,传入查询条件和新对象,这样原对象就会被替换掉了,注意,这里是完全被替换,下面的例子,"name"等于"张三"的这条文档将完全被{"age":100}覆盖掉。
db..update(查询条件,新对象)
db.stus.update({"name":"张三"},{"age":100}) #替换为新对象
如果我们只需要修改其中的某一个指定的属性,而不是替换,需要使用“修改操作符”,完成修改。 $set 可以用来修改文档中的指定属性。
db.stus.update({"name":"张三"},{$set:{"age":100}})
$unset 可以用来删除文档的指定属性。
db.stus.update({"name":"张三"},{$unset:{"age":"","gender":""}})
数据库删除操作
删除文档对象,remove()方法可以根据传递的条件删除文档, 如果 remove中传递的是空,那么就会清空文档。
db..remove()
db..deleteOne()
db..deleteMany()
除了remove清空文档,也可以使用drop()直接删除集合。
db.stus.drop() #直接删除集合
4bd2c96768b1e9d27ef0ceed73dd8959.gif 7a6ce09af5c396a741342510e71d2638.png 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值