zoukankan      html  css  js  c++  java
  • 【Mongodb】入门

    概述

    MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

    MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的

    MongoDB以BSON结构作为存储和网络存储,BSON是一种二进制的JSON,在JSON基础上扩展,比JSON支持更多的类型,如Date 和 BinData

    BSON结构具有以下特性

    • 轻量级
    • 可遍历
    • 高效性

    文档(Document):Mongodb以BSON结构存放的一条记录,相当于Row
    集合(Collection):存放文档的集合,相当于Table
    数据库(Database):存放集合和索引及其他信息的集合

    配置文件

    mongod.cfg

    storage:
      # 数据存放的位置
      dbPath: F:DatabaseMongodbData
      journal:
        # 持久化
        enabled: true
    #  engine:
    #  mmapv1:
    #  wiredTiger:
    
    # where to write logging data.
    systemLog:
      # 日志的记录形式
      destination: file
      # 是否追加
      logAppend: true
      # 日志的文件(注意是文件)
      path:  F:DatabaseMongodbLogmongod.log
    
    # network interfaces
    net:
      # 绑定端口
      port: 27017
      # 绑定Ip
      bindIp: 127.0.0.1

    启动Mongodb

    1. 按配置文件启动

    mongod -config mongod.cfg

    2. 指定参数启动

    mongod --dbpath "F:DatabaseMongodbData" --logpath "F:DatabaseMongodbLogmongod.log"

    3. 安装服务

    mongod --dbpath "F:DatabaseMongodbData" --logpath "F:DatabaseMongodbLogmongod.log" --serviceName "mongodb" --serviceDisplayName "mongodb" --install

    连接Mongodb

    cmd 执行

    1. 默认配置

    mongo

    2. 连接字符串

    mongo mongodb://localhost

    CRUD操作

    Create

    1. 插入单个文档

    db.logs.insertOne()

    var data = {"UserId" : 10, "Operate" : "登录" ,  "CreateTime" : new Date() };
    db.logs.insertOne(data);

    返回

    {
        "acknowledged" : true,  //是否写入成功
        "insertedId" : ObjectId("5e929706fe1792ce954f65f1")     //插入行的Id
    }

    2. 插入多个文档

    var data = [
        {"UserId": 10, "Operate": "登录", "CreateTime": new Date() },
        {"UserId": 10, "Operate": "点击首页", "CreateTime": new Date() },
        {"UserId": 10, "Operate": "查看列表", "CreateTime": new Date() }
    ]
    db.logs.insertMany(data);

    返回

    {
            "acknowledged" : true,
            "insertedIds" : [
                    ObjectId("5e9297dbfe1792ce954f65f2"),
                    ObjectId("5e9297dbfe1792ce954f65f3"),
                    ObjectId("5e9297dbfe1792ce954f65f4")
            ]
    }

    3. db.collection.insert

    insert可以插入单个文档(对象)/ 多个文档(对象的数组)

    var data = [
        {"UserId": 10, "Operate": "登录", "CreateTime": new Date() },
        {"UserId": 10, "Operate": "点击首页", "CreateTime": new Date() },
        {"UserId": 10, "Operate": "查看列表", "CreateTime": new Date() }
    ]
    db.logs.insert(data);

    返回
    单个文档

    WriteResult({ "nInserted" : 1 })

    多个文档

    BulkWriteResult({
            "writeErrors" : [ ],
            "writeConcernErrors" : [ ],
            "nInserted" : 3,
            "nUpserted" : 0,
            "nMatched" : 0,
            "nModified" : 0,
            "nRemoved" : 0,
            "upserted" : [ ]
    })

    4. 若不存在插入

    在日常操作中,经常需要写不存在就写入的操作,在mongodb一种更新机制(upsert),若不存在就写入。

    db.logs.update({ "UserId": 20 }, { "UserId": 20, "Operate": "登录", "CreateTime": new Date() }, { upsert: true })

    支持upsert参数的方法

    • db.collection.update()
    • db.collection.updateOne()
    • db.collection.updateMany()
    • db.collection.findAndModify()
    • db.collection.findOneAndUpdate()
    • db.collection.findOneAndReplace()

    Read

    db.logs.find({"UserId":20});
    db.logs.findOne({"UserId":10});

    Update

    1.  更新单个文档

    db.logs.updateOne({ "_id": ObjectId("5e92b6d4fe1792ce954f6613") }, { $set: { "CreateTime": new Date() } })

    2. 更新多个文档

    db.logs.updateMany({ "UserId": 10 }, { $set: { "CreateTime": new Date() } })

    Delete

    1. 删除单个文档

    db.logs.deleteOne({ "UserId": 20 })

    2. 删除多个文档

    db.logs.deleteMany({ "UserId": 10})

  • 相关阅读:
    国科大 高级人工智能 期末复习总结
    算法岗面试问题总结
    java如何判断溢出
    matrix67中适合程序员的例子
    java map
    tensorflow手写数字识别(有注释)
    epoch,iteration与batchsize的区别
    java中如何不自己写排序方法完成排序
    Kotlin实现《第一行代码》案例“酷欧天气”
    Kotlin入门第三课:数据类型
  • 原文地址:https://www.cnblogs.com/WilsonPan/p/12685393.html
Copyright © 2011-2022 走看看