【Mongodb】入門

来源:https://www.cnblogs.com/WilsonPan/archive/2020/04/12/12685393.html
-Advertisement-
Play Games

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


概述

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:\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. 按配置文件啟動

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})

轉發請標明出處:https://www.cnblogs.com/WilsonPan/p/12685393.html

參考文章

Collection Methods — MongoDB Manual


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 基礎概念簡述 鎖 資料庫通過鎖機制來解決併發場景 — 共用鎖(讀鎖)和排他鎖(寫鎖)。讀鎖是不阻塞的,多個客戶端可以在同一時刻讀取同一個資源;寫鎖是排他的,並且會阻塞其他的讀鎖和寫鎖。 簡單提下樂觀鎖和悲觀鎖: 樂觀鎖:通常用於數據競爭不激烈的場景,多讀少寫,通過版本號和時間戳實現 悲觀鎖:通常用於 ...
  • 什麼是索引 MySQL 官方對索引的定義:索引(Index)是幫助 MySQL高效獲取數據的數據結構。因此 索引的本質就是數據結構 。索引的目的在於提高查詢效率,可類比字典、書籍的目錄等這種形式。 可簡單理解為 排好序的快速查找數據結構 。在數據之外,資料庫系統還維護著 滿足特定演算法查詢的數據結構 ...
  • 本篇文章主要是寫一下我在配置redis時遇到的坑,安裝redis的教程可以查看這篇文章:https://www.cnblogs.com/wuwuyong/p/11697643.html; 1.第一個坑是在刪除redis的時候報錯: D:\redis\Redis x64 3.2.100 redis s ...
  • 熟悉的 Kylin 的朋友都知道,Apache Kylin 構建完的數據是存儲在 HBase 中的。Kylin on HBase 方案經過長時間的發展已經比較成熟,但是也還存在著一定的局限性。面對以上問題,Kyligence 推出了 Kylin On Parquet 方案。 ...
  • 例: update cyj_cx_dwjl set xrsj=DATEADD(day, DATEDIFF(day, xrsj, GETDATE()), XRSJ) where CONVERT(VARCHAR(10),xrsj,20)='2019-04-26'; ...
  • 在近期的 Apache Kylin × Apache Hudi Meetup 直播上,Apache Kylin PMC Chair 史少鋒和 Kyligence 解決方案工程師劉永恆就 Hudi + Kylin 的準實時數倉實現進行了介紹與演示。本文是分享現場的回顧。 ...
  • 類型名稱日期格式日期範圍存儲需求 YEAR YYYY 1901 ~ 2155 1 個位元組 TIME HH:MM:SS -838:59:59 ~ 838:59:59 3 個位元組 DATE YYYY-MM-DD 1000-01-01 ~ 9999-12-3 3 個位元組 DATETIME YYYY-MM- ...
  • 方法一:通過 plsql 工具和 oracle client(不是即時客戶端 instantclient) 的方式來連接 Oracle 一、 安裝 oracle client,(本教程已經下載並解壓) 二、 選 擇 管 理 員 安 裝 ,如圖: 三、剩下的就是一路下一步就 OK,安裝完成後在 doc ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...