当前位置: 首页 > article >正文

《NoSQL》非关系型数据库MongoDB 学习笔记!

Mongo基础:

使用数据库:

使用use 命令 后面跟着要使用的数据库名字即可, 例如:use cities, 值得注意的是, mongo中不像mysql, 还需要先创建数据库,后访问, mongo中,你无需先创建,当你使用use命令去访问一个不存在的数据库的时候, 这个数据库在内存中就已经被创建了!

        use users

查看当前使用的数据库:

db 

 使用集合:

集合, 可以理解为是mysql数据库中的表, mongo中, 一个数据库可以有多个集合。

使用 db命令, 跟上一个集合名字,就可以访问一个集合, 同上,mongo中的集合,不需要先创建,

db.集合名字, 例如:db.users

 插入一条文档:

文档, 可以理解为mysql数据库中,表中的一行又一行的数据, 但是mongo数据库中的文档, 则存的数据差不多是:JSON 类型的数据。

document = {
        "name": "zhangsan",

        "age": 22

}
db.users.insertOne(document)

查看集合中的所有文档:

 db.users.find().pretty()

 查询一条则使用findOne()

更新一条文档:

db.users.updateOne(filter={name: "张三"}, update={$set: {name: "李四"}})

删除一条或者多条文档:

 db.users.deleteOne({})

db.users.deleteMany({})

MongoDB -->> NoSQL 数据库:

插入<新增>文档:

插入一条文档:

 向集合中插入一条新文档, 可以使用 insertOne() 方法, 传递一个文档对象,则可以新增一条数据:

use xntest;
db.users.insertOne({name: "李四", age: "44"});

此时,集合中将会插入一条新的数据, 我们可以看下数据格式,长得和Json差不多,但是在mongo中, 这种类似Json 的数据, 被称之为 BSON

 插入多条文档:

插入多条文档可以使用insertMany()方法,使用此方法,我们可以向mongo传递一个 列表,来实现批量插入, 不用频繁的像使用insertOne() 那样一条一条的插入了。


db.users.drop()

document = [
{name: "xxxx",age:"33"},
{name: "xfewfgx",age:"33"},
{name: "fwawfger",age:"33"},
]

db.users.insertMany(document)
有序插入和无序插入:

当我们插入的数据很多的时候,有时候会不一定是哪个文档就出了问题, 但是我们又只想让没出问题的文档正常插入, 而出问题的文档,则就直接跳过不要了, 那么我们可以使用insertMany 的第二个参数, ordered,  如果将其指定为false, 则意味着无序插入, 如果某个文档出问题抛异常无法插入, 那么mongo会将其忽略掉, 然后重新排序,继续插入没有异常的文档。

document = [
{_id: 1, name: "xxxx",age:"33"},
{_id: 1, name: "xfewfgx",age:"33"},
{_id: 2, name: "fwawfger",age:"33"},
]

db.users.insertMany(document, {ordered: false})

删除文档:

删除文档同样提供了 deleteOne() 和 deleteMany() 两个方法, 在删除某个文档的时候,同样需要传入一个筛选文档, 也就是,你要删除的文档。


db.users.deleteMany({name: "xxxx"})

更新文档:

更新文档可以使用, updateOne, updateMany, 和 replaceOne.

updateOne, updateMany 第一个参数同样需要传入一个筛选条件, 而第二个参数,则是要变更的文档。 replaceOne 也是同样, 唯一不同的是, replaceOne, 第二个传递的文档参数,会将当前筛选出的文档给整个替换掉。

更新运算符:

$set 用来设置一个字段的值, 如果被设置的字段不存在,则创建,假如我们有一条文档:

{
    "_id": ObjectId("66fd5e7d812d7c3beb09b601"),
    "name": "zhangsan",
    "age": 111,
    "address": "zhegnzhou"
}

例如,我们想更新这个文档的age, 将其更新成33:

db.users.updateOne({name: "zhangsan"},{"$set": {"age": 33}})

 如果想要删除某个字段, 可以使用unset来实现, 例如,我们想删除 address

db.users.updateOne({name: "zhangsan"}, {"$unset": {"address": "zhengzhou"}})

我们还可以使用 $set 来修改或创建一个内嵌文档。

例如我们有这样一个文档:

{
    "_id": ObjectId("66fd61a3812d7c3beb09b602"),
    "name": "lisi",
    "infos": {
        "address": "郑州",
        "age": 11
    }
}

如果我们想修改这个内嵌文档,我们该如何做呢:

db.users.updateOne({name: "lisi"}, {"$set": {"infos.age": 111}})

 


http://www.kler.cn/news/332369.html

相关文章:

  • 实现实时数据推送:设计一个WebSocket服务器的实用指南
  • 公平锁与非公平锁的区别及其在 ReentrantLock 中的实现详解
  • 基于深度学习的脑电图信号解码
  • 解决MySQL报Incorrect datetime value错误
  • 毕业设计——springboot+netty+websocket实现一个简单的ChatGpt机器人聊天
  • CSP-J模拟赛(4)补题报告
  • iOS实现解压文件
  • Linux 下 C++ 操作串口并彻底释放控制权的总结
  • 海滨体育馆管理:SpringBoot系统设计与实现
  • 使用双向链表和哈希表实现LRU缓存
  • [Linux]:线程(二)
  • macOS 系统中python的安装步骤
  • 深入理解Dubbo源码核心原理-Part3
  • SpringCloud入门(九)Feign实战应用和性能优化
  • 从零开始Hadoop集群环境搭建
  • 《凡人修仙传》TXT精校全本|知轩藏书校对版!
  • 如何从相机的记忆棒(存储卡)中恢复丢失照片
  • pytest
  • 【Qt】无IDE的Gui程序快速开始
  • 深度学习基础—目标定位与特征点检测