mongodb入门操作

2023-11-15

mongodb入门操作

简单了解一下NoSql

NoSql

NoSql = not only sql

是非关系型数据库系统的统称,
它用于超大规模的数据的存储,提供有限的查询功能。

mongodb

mongodb是一个基于分布式文件存储的数据库系统

基础概念

在这里插入图片描述
一条数据在mongodb是一个文档,
文档是由一组键值对组成的;

集合没有固定的结构,
集合中的每一个文档,不需要有相同的字段,
并且相同的字段也可以是不相同的数据类型,
但是需要注意的是,文档的键值对是有序的,
通常情况下,我们insert同一集合的数据都会有一定的关联性。

例如:
{“site”: “www.baidu.com”}
{“site”: “www.tencent.com”, “name”: “腾讯”}

主键

插入文档时会自动生成主键"_id",是一个objectId类型的对象。

创建数据库

use superv

superv是我们的数据库名字,如果存在,切换到superv,
不存在则创建superv。
但是show dbs并不会显示superv,
当我们向superv添加一条数据的时,superv才真正创建。

db.superv.insert({"name": "abc"})

删除数据库

删除当前数据库

db.dropDatabase()

{ “dropped” : “superv”, “ok” : 1 }

创建集合

db.createCollection(“superv”)

{ “ok” : 1 }

查看集合

show collections
或
show tables

删除集合

db.superv.drop()

true

插入文档

文档的数据结构和json基本一致,
集合中的文档都是bson格式,
bson是一种二进制json存储格式,是binary json的简称。

db.collectionName.insert(document)

如果主键"_id"在集合中已存在,则抛出异常,插入失败。

db.superv.insert({"name": "abc", "age": 20})

WriteResult({ “nInserted” : 1 })

查看刚才插入的数据:

db.superv.find()

{ “_id” : ObjectId(“5fe58498182775e0c4afded4”), “name” : “abc”, “age” : 20 }

更新文档

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

参数说明:

query:
update的查询条件,类似sql update查询内的where语句。

update:
update的对象和一些更新的操作符(如 , , ,inc…)等,
类似sql update查询内的set语句。

upsert:
可选,如果不存在满足查询条件的记录,
是否插入一条新纪录objNew,true为插入,默认是false,不插入。

multi:
可选,是否全更新满足查询条件的记录,
如果为true,就更新所有满足条件的记录,默认false,只第一条。

writeConcern:
可选,抛出异常的级别。

实例:

db.superv.update({"name": "abc"}, {$set:{"name": "abcd"}}, {multi: true})

WriteResult({ “nMatched” : 1, “nUpserted” : 0, “nModified” : 1 })

删除文档

db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)

参数说明:

query:
(可选)删除的查询条件。

justOne:
(可选)如果设置为true,或者是1,
则只删除一个文档,默认false,删除所有匹配条件的文档。

writeConcern:
(可选)抛出异常的级别。

实例:

db.superv.remove({"age": 20})

WriteResult({ “nRemoved” : 2 })

删除所有文档:

db.superv.remove({})

查询文档

db.collection.find(query, projection)

参数说明:

query:
(可选)查询条件

projection:
(可选)投影,指定查询返回的字段,即filed,默认返回全部。

实例:

db.superv.find({"age": 24}).pretty()

只查询一条:

db.superv.findOne({"age": 24})

与sql条件查询比较

如果你sql查询比较熟悉,
通过对比可以更好的理解MongoDB的条件查询。
在这里插入图片描述

AND

语法:
db.col.find({key1:value1, key2:value2}).pretty()

实例:

db.superv.find({"age": 23, "name": "abc"}).pretty()

OR

语法:

db.col.find(
   {
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
).pretty()

实例:

db.superv.find(
   {
      $or: [
         {"age": 20}, {"age":21}
      ]
   }
).pretty()

$type操作符

这是事先新增的数据:
在这里插入图片描述
查询age字段为String类型的文档:
注意:string一定要全部小写。

db.superv.find({"age": {$type: "string"}})

在这里插入图片描述
Bson中的类型包含:
在这里插入图片描述

sort排序

db.COLLECTION_NAME.find().sort({KEY: 1})

1为升序,-1为降序。

实例:
按照年龄正序排序。

db.superv.find().sort({"age": 1}).pretty()

在这里插入图片描述

limit和skip

执行顺序:sort() > skip() > limit()

查询满足条件的第二条文档:

db.superv.find({"name": "abc"}).limit(1).skip(1).sort({"age": 1})

在这里插入图片描述

索引

索引是对数据库表中一列或多列的值进行排序的一种结构。

创建索引:
db.collection.createIndex(keys, options)

实例:

db.superv.createIndex({"age": 1})

在这里插入图片描述

聚合

db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

实例:
查询每个年龄的人数。
注意,"_id"是固定的,不能替换成别的。

db.superv.aggregate([{$group : {_id : "$age", count : {$sum : 1}}}])

在这里插入图片描述

参考资料:

菜鸟教程MongoDB 教程

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mongodb入门操作 的相关文章

随机推荐

  • 在Java中,将ExecutorService转为守护程序

    问题描述 我正在Java 1 6中使用一个ExecutoreService 简单地开始 ExecutorService pool Executors newFixedThreadPool THREADS 当我的主线程完成 以及由线程池处理的
  • vue调用原生方法交互

    目前在做一个H5应用 需要调用原生方法进行交互 特此做一个记录 技术栈 vue版本2 6 vant版本 2 12 第一步 声明一个rpcFn js文件 进行原生交互阿里桥封装 const rpc function url params re
  • github actions实现Android持续集成

    持续集成 Continuous Integration 在很多单位都有现成的系统 但是作为一名工程师 我们还是要了解其原理 可以自己尝试做一下 经过本人的尝试 发现功能并不复杂 这里把持续集成实践经验总结与大家分享 持续集成用的比较多的是j
  • 2023自动化专业毕业设计项目集合

    文章目录 1前言 2 如何选题 2 1 物联网方向 2 2 嵌入式开发方向 2 3 人工智能方向 2 4 算法研究方向 2 5 学长作品展示 4 最后 1前言 近期不少学弟学妹询问学长关于自动化专业相关的毕设选题 学长特意写下这篇文章以作回
  • 基于springcloud gateway + nacos实现灰度发布(reactive版)

    什么是灰度发布 灰度发布 又名金丝雀发布 是指在黑与白之间 能够平滑过渡的一种发布方式 在其上可以进行A B testing 即让一部分用户继续用产品特性A 一部分用户开始用产品特性B 如果用户对B没有什么反对意见 那么逐步扩大范围 把所有
  • 一个网站引发的程序猿的牢骚,哈哈哈

    2013年大学毕业后 参加工作做的第一个前端项目 北京服装学院 今天调研一个关于iframe的需求 突然想试试 以前那些做IE6兼容的项目是否还在使用 就默默的点开了 十年了 他们没有换网站 我的岁月似乎从这一刻又回来了一次 已经十年了 我
  • Flask学习笔记(二)

    Flask学习笔记 二 1 知识点 1 1虚拟环境 1 1 1virtualenv 1 1 2virtualenvwrapper 1 2web与视图 1 3jinja2 1 3 1template知识点 1 3 2豆瓣列表页 1 3 3视图
  • 锚框损失论文下载 Iou-Loss【IoU Loss、GIoU Loss、 DIoU Loss 、CIoU Loss、 CDIoU Loss、 F-EIoU Loss、α-IoU Loss】

    锚框损失 Iou Loss IoU Loss GIoU Loss DIoU Loss CIoU Loss CDIoU Loss F EIoU Loss IoU Loss 论文打包下载 yolo系列论文https download csdn
  • cocosCreator2.3.x渲染流程深入剖析笔记(三)

    渲染批次合并之顶点 根据前面说过的render flow流程接下来就是重头戏了render流程 其中包括了 检查两个渲染节点是否可以合并 同时把renderData的数据填充到modelBatch里的buffer中去 所有需要渲染的节点都有
  • Kotlin中匿名函数(又称为Lambda,或者闭包)和高阶函数的详解

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到教程 1 匿名函数 fun main 匿名函数 1 定义时不取名字的函数 我们称之为匿名函数 匿名函数通常整体传递给其他函数 或者从其他函数返
  • java中到底该不该用@author标识作者?

    今天查看activiti的README 突然发现一段很有意思的FAQ Why do you not accept author lines in your source code Because the author tags in the
  • Redis基础

    一 Redis入门 1 Redis简介 Redis Remote Dictionary Server 即远程字典服务 是一个基于内存的key value结构数据库 是用C语言开发的一个开源的高性能键值对 key value 数据库 它可以用
  • 基于python 蔬菜价格数据分析 完整代码+数据

    https download csdn net download weixin 55771290 87567123
  • GRU解决预测分类问题(多变量预测多步)

    解决问题的背景 现有五个属性列 前四个属性列作为特征输入 第五个属性列作为标签值 第五个属性列的意义是类别 先需要通过前50步的数据特征预测后10步的类别 即 51 60步 1 直接多输出的方式 直接多输出的方式就是在神经网络的最后加上几个
  • Linux·DNS协议、ICMP协议、NAT技术

    目录 DNS协议 DNS背景 编辑域名简介 域名解析过程 使用dig工具分析DNS过程 ICMP协议 ICMP功能 ICMP协议格式 编辑ping命令 一个值得注意的坑 traceroute命令 NAT技术 NAT技术背景 NAT IP转换
  • 报错:‘NoneType‘ object has no attribute ‘shape‘

    报错 NoneType object has no attribute shape import cv2 as cv img cv imread images1 print img shape img shape 图像大小 行 列 通道数
  • TypeScript基础入门 - 枚举 - 联合枚举与枚举成员的类型

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 转发 TypeScript基础入门 枚举 联合枚举与枚举成员的类型 项目实践仓库 https github com durban89 typescript demo git
  • Unity中添加按钮的方式

    方式一 使用 GUILayout 自动布局 用 GUILayout Button 来创建按钮 会自动的在屏幕的右上角按列排列按钮 这种方式添加的按钮大小和位置都无法改变 为默认值 private void OnGUI if GUILayou
  • f5负载均衡配置文件服务器,f5 负载均衡 dns 服务器 配置

    f5 负载均衡 dns 服务器 配置 内容精选 换一换 查询负载均衡器状态树 可通过该接口查询负载均衡器关联的监听器 后端云服务器组 后端云服务器 健康检查 转发策略 转发规则的主要信息 了解负载均衡器下资源的拓扑情况 GET v2 pro
  • mongodb入门操作

    mongodb入门操作 简单了解一下NoSql NoSql NoSql not only sql 是非关系型数据库系统的统称 它用于超大规模的数据的存储 提供有限的查询功能 mongodb mongodb是一个基于分布式文件存储的数据库系统