自学大数据第14天NoSQL~MongoDB及其命令

这篇具有很好参考价值的文章主要介绍了自学大数据第14天NoSQL~MongoDB及其命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

自学大数据第14天NoSQL~MongoDB及其命令

这几天主要是看了一下mongodb的一些知识,网上也有一些教程,今天主要是复习一下mongodb

启动mongodb

在连接mongodb前首先要创建数据存放目录与日志存放目录,还得保证当前用户对这两个目录有相应的读写操作

mongod --dbpath=/usr/local/mongodb/data/db/ --logpath=/usr/lcoal/mongodb/data/logs/mongodb.log --logappend --bind_ip=0.0.0.0 --port=27017

这时候是以非守护进程模式运行mongodb,我们退出后mongodb也会退出;

  • –fork:在基于 Unix 的系统中,使用 fork 创建服务器进程,将 MongoDB 服务作为守护进程运行。如果指定了 --fork,则必须同时指定 --logpath。
  • –dbpath:指定存放 MongoDB 数据的目录,启动服务时必须指定。
  • –logpath:默认日志是打印在命令行中的,使用该选项指定日志输出的文件。如果对此目录有写权限且文件不存在,则会自动创建该文件。如果日志文件已经存在,默认会覆盖掉该文件,并删除所有旧的日志。如果希望保留旧的日志,除了使用
    –logpath 之外,还应该使用 --logappend 选项。

使用 --fork命令后启动
自学大数据第14天NoSQL~MongoDB及其命令

连接mongodb

使用mongosh连接mongodb

自学大数据第14天NoSQL~MongoDB及其命令
默认连接到的是test库

创建一个数据库

use databasename

当有这个库的时候就会切换到这个库,没有则创建一个库并切换到该库

自学大数据第14天NoSQL~MongoDB及其命令
当我们刚创建一个空的库时,我们使用查看命令是查看不到该库的,只有库中有数据时才会显示出来;
自学大数据第14天NoSQL~MongoDB及其命令

创建集合

有了库,我们在库中创建集合:
创建集合两种方式:

  • 1,通过使用创建集合函数的方式
db.createCollection('gavinlim',{capped:true,autoIndexId:true,size:102400,max:10000})

这种方式会指定一些参数:

  • capped~容量是否固定
  • autoIndexId~是否有主键
  • size~分配空间大小
  • max~最大数据数量

查看容量是否固定
自学大数据第14天NoSQL~MongoDB及其命令

  • 2.直接插入数据的方式
db.gpl.insert({'name':'gavin','age':29})

这种插入数据的方式,如果有集合,则向该集合插入数据,如果没有该集合,则创建该集合并插入数据

查看集合
自学大数据第14天NoSQL~MongoDB及其命令
查看集合中的数据

db.gpl.find()

自学大数据第14天NoSQL~MongoDB及其命令

在最新版本中已经移除了save方法
自学大数据第14天NoSQL~MongoDB及其命令

关于主键是否有必要自己创建而不用mongodb给出的方案的问题:

我们使用insert的方式创建的集合,会默认使用主键

_id: ObjectId("642d6c8a0f471b266387e6f5")

如果不需要使用mongodb通过的主键方式,那么索引就成了一个问题,需要在创建索引,

我们在创建集合时故意不指定autoIndexId,但是在插入数据时还是生成了一个_id,这说明monggodb不建议自定义主键,(如果使用自定义主键,那么可能需要修改配置文件吧)
自学大数据第14天NoSQL~MongoDB及其命令

MongoDB中的主键是什么?

在MongoDB中,_id字段是集合的主键,以便可以在集合中唯一地标识每个文档。_id字段包含唯一的Object ID 值。

默认情况下,在集合中插入文档时,如果您没有在字段名称中添加带有_id的字段名称,则MongoDB将自动添加一个Object id字段

自定义主键

如果要确保在创建集合时MongoDB不会创建_id字段,并且要指定自己的ID作为集合的_id,则需要在创建集合时明确定义它。

在显式创建id字段时,需要使用名称中的_id创建它。

如下面的方式:

hadoop> db.code.insert({_id:001,'name':'Bob','age':27})
{ acknowledged: true, insertedIds: { '0': 1 } }
hadoop> db.code.find()
[ { _id: 1, name: 'Bob', age: 27 } ]

自学大数据第14天NoSQL~MongoDB及其命令
建了这么多集合和数据库,我们试着删除他们:

删除数据库和集合

删除集合

#db.collectionname.drop()

db.gavin.drop()

自学大数据第14天NoSQL~MongoDB及其命令

删除数据库

db.dropDatabase()

自学大数据第14天NoSQL~MongoDB及其命令

有一点小发现,我们删除数据库了,这只意味着删除了数据库中的集合,我们在创建数据库(同名)的时候会提示

already on db hadoop

自学大数据第14天NoSQL~MongoDB及其命令
这里暂且不去管他

到这里,或许我们就大致理解了mongodb的模型了:

我们对比一下关系型数据库Mysql:

  • mongodb中数据库对应Mysql中数据库
  • mongodb中集合对应mysql中一张张表;

monggodb中存储的数据结构比较松散,不像mysql中那样一但定下来就步容易修改了;

如果插入数据相同会出现什么情况?

在没有指定自定义主键的情况下:

自学大数据第14天NoSQL~MongoDB及其命令
可以看到由于主键不同,素以可以正常插入
我们插入自定义的主键:
自学大数据第14天NoSQL~MongoDB及其命令
可以发现报错了;

MongoDb中的选择器

选择器主要用于加快数据的操作效率

学习选择器我们以update()函数为例子

  1. $set

插入数据:
自学大数据第14天NoSQL~MongoDB及其命令

修改数据:

hadoop> db.gpl.update({'name':'Bob'},{$set:{'name':'Jobs'}})
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}

自学大数据第14天NoSQL~MongoDB及其命令
自学大数据第14天NoSQL~MongoDB及其命令
有多条数据时,只会修改第一条匹配的数(如果未指定修改多条数据的情况下)
自学大数据第14天NoSQL~MongoDB及其命令

$inc

针对数值做运算的

db.gpl.update({'name':'Bob'},{$inc:{'age':10}})

自学大数据第14天NoSQL~MongoDB及其命令

其他选择器:文章来源地址https://www.toymoban.com/news/detail-414544.html

到了这里,关于自学大数据第14天NoSQL~MongoDB及其命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MongoDB 2023年度纽约 MongoDB 年度大会话题 -- 企业级从传统数据库到NOSQL,你会更好...

    开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共1300人左右 1 + 2 + 3 + 4) 3群即将突破 400 (目前387)会关闭自由申请

    2024年02月07日
    浏览(46)
  • 【NOSQL】MongoDB

    MongoDB是一个开源、高性能、无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种。是最 像关系型数据库(MySQL)的非关系型数据库。 它支持的数据结构非常松散,是一种类似于 JSON 的 格式叫BSON,所以它既可以存储比较复杂的数据类

    2024年02月16日
    浏览(36)
  • 关于你欠缺的NoSQL中的redis和mongoDB

    不知不觉已经进入NoSQL的学习来了,那么什么是NoSQL呢?NoSQL的数据分类有哪一些呢? 一、 什么是NoSQL呢? 二、 NoSQL的数据分类有哪一些呢? REDIS中一些常用的命令 : LPUSH/LPUSHX:LPUSH是将值插入到链表的头部,LPUSHX是检测这个链表是否存在,如果存在的话会插入头部,如果不存

    2024年02月17日
    浏览(36)
  • 头歌 · NoSQL系列课程 · Neo4J / MongoDB 实验

    科研部建设中,覆盖歌云端实验平台对于Neoj4、MongoDB 的实验项目 目录 目录 ​编辑 Neo4j  实验一、二 MonGoDB实验三、四 实验五六、redis   Neo4j  实验一、二 MonGoDB实验三、四 实验五六、redis

    2024年02月07日
    浏览(40)
  • NoSQL MongoDB Redis E-R图 UML类图概述

    NoSQL(Not only SQL)是对不同于传统的关系数据库的数据库管理系统的统称,即广义地来说可以把所有不是关系型数据库的数据库统称为NoSQL。 NoSQL 数据库专门构建用于特定的数据模型,并且具有灵活的架构来构建现代应用程序。NoSQL 数据库使用各种数据模型来访问和管理数据。这

    2024年02月10日
    浏览(44)
  • 【Koa】[NoSQL] Koa中相关介绍和使用Redis & MongoDB增删改查

    目标: 了解什么是关系型数据库 关系型数据库,是指采用了 关系模型 来组织数据的数据库。 关系模型,指的就是 二维表格模型 ,而一个关系型数据库就是由 二维表及其之间的联系 所组成的一个数据组织。 关系型数据库一般都支持数据库事务,必须具备 ACID 特性。 ACID 分

    2024年02月16日
    浏览(38)
  • 自学大数据第八天~HDFS命令(二)

    嗨喽,好久不见,最近抽空复习了一下hadoop,书读百遍,其意自现这句话还真是; 改变文件 拥有者~chown 使用 -R 将使改变在目录结构下递归进行。命令的使用者必须是超级用户。 改变文件所属组-chgrp 改变文件权限-chmod 使用-R将使改变在目录结构下递归进行。命令的使用者必须是文

    2023年04月09日
    浏览(37)
  • mongodb.使用自带命令工具导出导入数据

    记录 mongo 数据库用原生自带的命令工具使用 json 文件方式进行导入、导出的操作! 在一次数据更新中,同事把老数据进行了清空操作,但是新的逻辑数据由于某种原因(好像是她的电脑中病毒了),一直无法正常连接数据库进行数据插入,然后下午2点左右要给甲方演示,所

    2023年04月24日
    浏览(35)
  • 【MongoDB】数据库、集合、文档常用CRUD命令

    目录 一、数据库操作 1、创建数据库操作 2、查看当前有哪些数据库 3、查看当前在使用哪个数据库 4、删除数据库 二、集合操作 1、查看有哪些集合 2、删除集合 3、创建集合 三、文档基本操作 1、插入数据 2、查询数据 3、删除数据 4、修改数据 四、文档分页查询 五、文档其

    2024年02月13日
    浏览(44)
  • 【工作笔记-0038】mongodb mongorestore 命令行导入 bson.gz数据

    1. 导出的集合文件格式如下( 也就是导出的表文件 ): 例如:    D:Filesxxxx集合名称.bson.gz 怎样导出,这里不做介绍,用 mongodb compass 或者 studio 3t 都可以 2. 下载命令行导入工具: 官方下载地址:Download MongoDB Command Line Database Tools | MongoDB 选择 zip 文件下载即可,解压就能用

    2024年02月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包