MongoDB入门教程__BaiMoci

本文是MongoDB入门教程,介绍了MongoDB的插入、查询、修改和删除数据的基本操作。包括如何插入单个和多个文档,查询所有和特定条件的数据,更新数据的updateOne和updateMany方法,以及删除数据的deleteOne和deleteMany操作。此外,还讲解了数据去重的distinct方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

下面是Sql与mongodb的术语对比

插入数据

首先我们先创建一个名字为test_data_1的集合

db.get Collection('test_data_1').insertOne(
    {
        "name":888,
        "address":"changsha"
    }
)

当然,将这一条语句写成一行也是没有问题的。其中,Key(也就是上面的name和address)是可以不带引号的,同时对于字符串也可以使用单引号,不过为了统一,在后面统一使用双引号。

下面是执行这一条数据返回的结果

{
    "acknowledged" : true,
    "insertedId" : ObjectId("5d5f9e5c0336f9e82b3f9d74")
}

其中acknowledged代表数据是否被承认。其中,每一条数据被插入的时候都会返回一个字段“_id”,也就是ObjectId,它是由时间、机器码、进程pid和自增计数器构成的。“_id”始终递增,并绝对不重复。

插入多个文档

mongodb也同时支持一次插入多个文档

db.getCollection('test_data_1').insertMany([
        {
            "name":"名字1",
        },
        {
            "name":"名字2",
        },
        {
            "address":"湖南"
        },
    ]
)

这里我们又可以想一想,我们是否可以使用insertOne实现insertMany的功能?肯定是可以的,但是会造成什么影响呢?我们可以从网络带宽,磁盘IO,机器性能,以及稳定性来考虑。

在插入相同大小的数据时,使用insertMany的性能要明显好于insertOne,因为insertOne会频繁的调用去插入数据,而insertMany却只会调用一次。如果mangodb数据库与调用者不在同一台机器上,那么性能相差便会更大,因为数据在网络传输的过程中会添加其他的报文。那么插入数据的时候是不是应该将数据全部一次插入呢?也不是!!试想一下,如果插入的数据过多,将磁盘的IO占满了,那么必会对其他程序造成影响。并且,如果在快要插入完所有数据的时候,服务器断电了,那么……所以说,应该合理的选择一次性插入数据库的数量。

查询数据

查询所有数据

db.getCollection('test_data_1').find({})

其中{}里面包含的是查询条件,因为是查询所有的数据,所以直接为空就行了,或者省略{}也行。

查询特定的数据 

db.getCollection('test_data_1').find({"字段1":"固定值1","字段2":"固定值2"})

查询范围值数据

下面是查询i范围值的语法,至于操作符,我们后面再说。

db.getCollection('test_data_1').find(
    {
        "字段1":{"操作符1":边界1,"操作符2":边界2},
     	"字段2":{"操作符1":边界1,"操作符2":边界2}
    }
)

修改数据

修改数据的前一部分是需要找到数据,然后才能进行修改。同样,在mongodb中,有两种方法修改数据(实际上有很多种)

  • updateOne:只更新第一条符合条件的数据
  • updateMany:更新所有符合条件的数据

下面介绍updateMany的更新数据

db.getCollection('test_data_1').updateMany(
    // 下面是查询条件
    { 
       "字段名1":"查找条件1","字段名2":"查找条件2"
     },
   // 进行修改
    {
        "$set":{"字段名":"新的数据","字段名":"新的数据"}
    } 
)

其中,如果在进行在进行修改的步骤中,如果字段名以前不存在则会进行增添。

当然,更新数据的内容不可能就这么一点点,但是因为这仅仅是一个基础入门教程,其他的就拜拜吧!想了解更多可以去看看其他的教程。

删除数据

删除数据也有两种操作,deleteOnedeleteMany。和修改数据的情况差不多,一个是删除第一条满足条件的,一个是删除所有满足条件的。

还是以deleteMany来说:

db.getCollection('test_data_1').deleteMany(
    // 删除的条件
    {
        "字段名1":"值","字段名2":"值2"
    }
)

数据去重

在mongodb中进行数据去重是一个很简单的操作。使用distinct即可。它可以接收两个参数,第一个参数为需要被去重的字段名,第二个参数是进行去重的条件(去重条件也就是进行查询操作的第一个参数,可以省略)。

db.getCollection('test_data_1').distinct(去重的字段名,去重的条件)

下面举个例子:

db.getCollection('test_data_1').distinct("name",{"age":{"$ne":10}})

这个的含义就是,在age不等于10的条件下对name字段进行去重!那么返回的数据是什么呢?是一个数组,里面是去重后的表中name字段的非重复的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值