写点什么

软件测试学习笔记丨 MongoDB

作者:测试人
  • 2024-10-10
    北京
  • 本文字数:1551 字

    阅读完需:约 5 分钟

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/32359

一、MangoDB 数据库

1.1 关系与非关系

1.1.1 关系型数据库


  • 关系型数据库 MySQL,Oracle, SQLServer, Access…SQL(结构化查询语句)

  • 关系多对多:书与读者一对多:书与作者一对一:书与出版日期

  • 关系型数据库的问题:存储在硬盘上,读写慢;保持 ACID 难扩展。

1.1.2 非关系型数据库

优点:

  • Nosql(Not Only SQL)

  • key:value

  • CAP → BASE 一致性(Consistency):所有节点在同一时间具有相同的数据;可用性(Availability):保证每个请求不管成功或失败都有响应;分隔容忍(Partition tolerance):系统中任意信息的丢失或失败不会影响系统的继续运作。

缺点:

  • 没有标准化;

  • 有限的查询功能(到目前为止)。



1.2 MongoDB 简介

  • 非关系型数据库 Nosql

  • 文档存储:类 json 格式

  • 有机会对字段建立索引,实现关系数据库。

1.2.1 下载安装



1.3 常用命令

1.3.1 配置数据库目录

  • 运行 MongoDB 服务器:mongodb -dbpath xxx

  • 连接 MongoDB:mongo

1.3.2 删除数据库

  • 查看当前数据库:show dbs

  • 切换数据库(如果没有,会自动创建):use demo1

  • 往数据库中插入一条数据:db.demo1.insert({“name”: “ 小红” })

  • 切换数据库:use demo1

  • 删除数据库:db.dropDatabase()

1.3.3 集合

定义:集合相当于一张表, 集合可以有多个文档。

创建/查看/删除集合

  • 创建集合:db.createCollection('collection1')

  • 查看已经创建的集合:show collections

  • 删除集合:db.collection1.drop()

文档

文档是 Mongodb 中的基本但愿,相当于表中的一条记录,以 json 格式展示。

  • 插入/查看文档:插入文档时,Mongodb 自动创建集合:db.collectionDemo.insert({"name":"hello"})查看插入的内容:db.collectionDemo.find().pretty()

  • 插入复杂文档:声明变量,插入文档:

document=({  title:'MongoDB',  by:'hogwarts',  tags:['mongodb','database','NoSQL'],})
db.collectionDemo.insert(document)
复制代码


  • 修改和删除文档:格式:

db.collection.update(  <query>,  <update>,  {    upsert:<boolean>,    multi:<boolean>,    writeConcern:<document>})
复制代码
  • 可选项:upsert:如果不存在 update 的记录,是否插入,默认 false;multi:把按条件查出来多条记录全部更新,默认 false;writeConcern:抛出异常的级别。

  • 注意:update 是替换,没有修改的字段会消失。

  • 修改单个文档

db.col.update({'title':'MongoDB'},{'title':'MongoDB123'})
复制代码
  • 修改多个文档

db.col.update({'name':'hello'},{$set:{'name':'hello123'}},{multi:true})
复制代码
  • 删除单个文档

db.col.remove({'name':'hello123'})

  • 删除多个文档

db.col.remove({'name':'hello', 1})

1.3.4 修改操作符

$inc

  • 语法:{$inc:{field:value}};

  • 作用:对一个数字字段的某个 field 增加 value;

  • 示例:将 name 为 xiaohong 的学生的 age 增加 5。


    db.students.update({'name':'xiaohong'}, {$inc:{age:5}})

$set

  • 语法:{$set:{field:value}};

  • 作用:对文档中某个字段的 field 设置为 value;

  • 示例:将 name 为 xiaohong 的学生的 age 设置为 10。


    db.students.update({'name':'xiaohong'}, {$set:{age:10}})

$unset

  • 语法:{$unset:{field:value}};

  • 作用:删除某个字段的 field;

  • 示例:将 chenzhou 的年龄字段删除。


    db.students.update({'name':'chenzhou'}, {$unset:{age:1}})

$push

  • 语法:{$push:{field:value}};

  • 作用:把 value 追加到 field 里。注意 field 只能是数组类型,如果 field 不存在,会自动插入一个数组类型。

  • 示例:将 chenzhou 添加别名 Micheal。


    db.students.update({'name':'chenzhou'}, {$push:{"ailas":"Micheal"}})

$rename

  • 语法:{$rename:{old_field_name:new_field_name}};

  • 作用:对字段重命名;

  • 示例:将 name 为 xiaohong 的学生的 name 字段重命名为 hello。


    db.students.update({'name':'xiaohong'}, {$rename:{"name":"hello"}})

软件测试开发免费视频教程分享


发布于: 刚刚阅读数: 5
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试学习笔记丨MongoDB_软件测试_测试人_InfoQ写作社区