【Mongodb】入門

概述html

MongoDB 是一個基於分佈式文件存儲的數據庫。由 C++ 語言編寫。旨在爲 WEB 應用提供可擴展的高性能數據存儲解決方案。mongodb

MongoDB 是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的數據庫

MongoDB以BSON結構做爲存儲和網絡存儲,BSON是一種二進制的JSON,在JSON基礎上擴展,比JSON支持更多的類型,如Date 和 BinData數組

BSON結構具備如下特性網絡

  • 輕量級
  • 可遍歷
  • 高效性

文檔(Document):Mongodb以BSON結構存放的一條記錄,至關於Row
集合(Collection):存放文檔的集合,至關於Table
數據庫(Database):存放集合和索引及其餘信息的集合分佈式

 

配置文件性能

mongod.cfgspa

storage:
  # 數據存放的位置
  dbPath: F:\Database\Mongodb\Data
  journal:
    # 持久化
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  # 日誌的記錄形式
  destination: file
  # 是否追加
  logAppend: true
  # 日誌的文件(注意是文件)
  path:  F:\Database\Mongodb\Log\mongod.log

# network interfaces
net:
  # 綁定端口
  port: 27017
  # 綁定Ip
  bindIp: 127.0.0.1

 

 

啓動Mongodb日誌

1. 按配置文件啓動code

mongod -config mongod.cfg

2. 指定參數啓動

mongod --dbpath "F:\Database\Mongodb\Data" --logpath "F:\Database\Mongodb\Log\mongod.log"

3. 安裝服務

mongod --dbpath "F:\Database\Mongodb\Data" --logpath "F:\Database\Mongodb\Log\mongod.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})
相關文章
相關標籤/搜索