zoukankan      html  css  js  c++  java
  • mongodb学习笔记

    MongoDB

    数据库

    1. 关系型数据库(RDBMS):mysql , oracle, db2, sql server

      • 关系数据库中全是表
    2. 非关系型数据库(NoSQL):MongoDB、redis

      • 键值对数据库(redis)
      • 文档数据库(MongoDB)

    简介

    • MongoDB的数据模型是面向文档的,所谓文档就是类似于JSON的结构,MongoDB中存的就是各式各样的JSON(BSON)。

    安装

    mongodb安装

    • 可以配置开机自启动,菜鸟教程

    基本概念

    • 数据库(database)

    • 集合(collection) == 表

    • 文档(document) == 记录(元组)

      • 数据库>集合> 文档
      • 在MongoDB中,数据库和集合都不需要手动创建
      • 当我们创建文档时,如果文档所在的集合或数据库不存在,会自动创建

    基本指令

    • show dbs == show databases
    • use 数据库名
    • db : 显示当前所在的数据库
    • show collections : 显示数据库中的所有集合

    CRUD操作

    • 插入文档

      • db.集合名称.insert(文档对象)

        • 向集合中插入一个或多个文档

        • 当像集合中插入文档时没有给文档指定id,数据库会自动生成一个,该属性用来做唯一标识,id 也可以自己指定但要唯一。

        • 例子:向test数据库中的stus集合插入一个新的学生对象

          {name:"zhangsan",age:10,gender:"male"}

          db.stus.insert({name:"zhangsan",age:10,gender:"male"})

        • 插入多个对象

          db.stus.insert([
          	{name:"lisi", age:"12", gender:"female"},
          	{name:"王五", age:"15", gender:"male"}])
          
      • db.集合名称.insertOne(文档对象)

        • 只能插入一个文档对象。
      • db.集合名称.insertMany(文档对象)

        • 只能插入多个文档对象。
        • 这样做更清晰。
    • 查询文档

      • db.集合名称.find()

        • 查询当前集合的所有文档

        • 可以接受一个对象作为条件参数

          • {}: 表示查询集合中所有文档
          • {属性:值}: 查询指定属性值的文档
        • find() 返回的是一个数组

          db.stus.find({name:"lisi"})
          
      • db.集合名称.findOne()

        • 查询集合中符合条件的第一个文档

        • findOne() 返回的时一个文档对象

          db.stus.findOne({name:"zhangsan"})
          
      • db.集合名称.find({}).count()

      • 查询所有结果的数量

    • 修改文档

      • db.集合名称.update(查询条件,新对象,属性可以没有 )

        • update() 默认情况下使用新对象替换旧对象

        • 如果需要修改指定的属性,而不是替换需要使用"修改操作符"来完成

          • $set 可以用来修改文档中的指定属性
          • $unset 可以用来删除文档的指定属性
        • update() 默认只会修改一个

        • 属性可以指定multi为true,这样就可以修改多个对象

      • db.集合名称.updateMany()

        • 同时修改多个符合条件的文档
      • db.collection.updateOne()

        • 修改一个符合条件的文档

          // 修改所有name为lisi的年龄为20
          db.stus.updateMany(
          	{name:"lisi"},  // 查询条件
          	{				// 新对象
          	    $set:{
          	        age:20
          	    }
          	}
          )
          
      • db.集合名称.replaceOne()

        • 替换
    • 删除文档

      • db.集合名称.remove()

        • 删除一个或多个,可以传第二个参数,若为true则只会删除一个
        • 如果传一个空对象则会删除全部
      • db.集合名称.deleteOne()

      • db.集合名称.deleteMany()

      • db.集合名称.drop() 删除集合

      • db.dropDatabase() 删除数据库

    文档间的关系

    1. 一对一
    2. 一对多 多对一
    3. 多对多

    可以通过内嵌文档的形式来体现

    排序和投影

    • db.collection.find({}).sort({})

      sort()需要传递一个对象来指定排序规则 1表示升序,-1表示降序

    • db.collection.find({})

      find() 可以在第二个参数的位置来设置查询结果的 投影 (想要显示的列) 想显示的 1 不要显示的 0

  • 相关阅读:
    window.open打开新的独立页面
    域名如何添加解析?
    URL 链接中的 UTM参数何定义?
    学习总结【匿名函数,匿名自执行函数】
    CSS布局之Flex布局
    CSS布局之display: tables布局
    CSS里盒子模型中【margin垂直方向边界叠加】问题及解决方案
    Hibernate 事务管理
    Hibernate 二级缓存
    Hibernate c3p0的整合
  • 原文地址:https://www.cnblogs.com/hhhhire/p/11980208.html
Copyright © 2011-2022 走看看