mongodb資料庫安裝

来源:https://www.cnblogs.com/wxp5257/archive/2018/01/19/8317281.html
-Advertisement-
Play Games

mongodb的安裝 1,下載安裝包: http://www.runoob.com/mongodb/mongodb-window-install.html 2,安裝至: D:\MongoDB,將D:\MongoDB\bin目錄加入環境變數 3,在 D:\MongoDB下新建文件夾 : 4,直接在命令 ...


mongodb的安裝

1,下載安裝包: http://www.runoob.com/mongodb/mongodb-window-install.html

2,安裝至:    D:\MongoDB,將D:\MongoDB\bin目錄加入環境變數

3,在 D:\MongoDB下新建文件夾 :

D:\MongoDB\data\db
D:\MongoDB\log\mongod.log

4,直接在命令行指定配置:

mongod --bind_ip 0.0.0.0 --port 27017 --logpath D:\MongoDB\log\mongod.log --logappend --dbpath D:\MongoDB\data\db  --serviceName "MongoDB" --serviceDisplayName "MongoDB"  --install

5,啟動\關閉服務:

net start MongoDB
net stop MongoDB

6,登錄:

mongo

賬號的創建

#1、創建賬號
use admin
db.createUser(
  {
    user: "root",
    pwd: "123",
    roles: [ { role: "root", db: "admin" } ]
  }
)

use test
db.createUser(
  {
    user: "www",
    pwd: "123",
    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "db1" } ]
  }
)


#2、重啟資料庫
mongod --remove
mongod --bind_ip 0.0.0.0 --port 27017 --logpath D:\MongoDB\log\mongod.log --logappend --dbpath D:\MongoDB\data\db  --serviceName "MongoDB" --serviceDisplayName "MongoDB"  --install --auth
#3、登錄:註意使用雙引號而非單引號
mongo
--port 27017 -u "root" -p "123" --authenticationDatabase "admin"
也可以在登錄之後用db.auth(
"賬號","密碼")登錄 mongo use admin db.auth("root","123")

基本數據類型

1、在概念上,MongoDB的文檔與Javascript的對象相近,因而可以認為它類似於JSON。JSON(http://www.json.org)是一種簡單的數據表示方式:其規範僅用一段文字就能描述清楚(其官網證明瞭這點),且僅包含六種數據類型。

2、這樣有很多好處:易於理解、易於解析、易於記憶。然而從另一方面說,因為只有null、布爾、數字、字元串、數字和對象這幾種數據類型,所以JSON的表達能力有一定的局限。

3、雖然JSON具備的這些類型已經具有很強的表現力,但絕大數應用(尤其是在於資料庫打交道時)都還需要其他一些重要的類型。例如,JSON沒有日期類型,這使得原本容易日期處理變得煩人。另外,JSON只有一種數字類型,無法區分浮點數和整數,更別區分32位和64位了。再者JSON無法表示其他一些通用類型,如正則表達式或函數。

4、MongoDB在保留了JSON基本鍵/值對特性的基礎上,添加了其他一些數據類型。在不同的編程語言下,這些類型的確切表示有些許差異。下麵說明瞭MongoDB支持的其他通用類型,以及如何正在文檔中使用它們

#1null:用於表示空或不存在的欄位
d={'x':null}
#2、布爾型:true和false
d={'x':true,'y':false}
#3、數值
d={'x':3,'y':3.1415926}
#4、字元串
d={'x':'www'}
#5、日期
d={'x':new Date()}
d.x.getHours()
#6、正則表達式
d={'pattern':/^www.*?nb$/i}

正則寫在//內,後面的i代表:
i 忽略大小寫
m 多行匹配模式
x 忽略非轉義的空白字元
s 單行匹配模式

#7、數組
d={'x':[1,'a','v']}

#8、內嵌文檔
user={'name':'www','addr':{'country':'China','city':'YT'}}
user.addr.country

#9、對象id:是一個12位元組的ID,是文檔的唯一標識,不可變
d={'x':ObjectId()}

5、_id和ObjectId

MongoDB中存儲的文檔必須有一個"_id"鍵。這個鍵的值可以是任意類型,預設是個ObjectId對象。
在一個集合里,每個文檔都有唯一的“_id”,確保集合里每個文檔都能被唯一標識。
不同集合"_id"的值可以重覆,但同一集合內"_id"的值必須唯一

#1、ObjectId
ObjectId是"_id"的預設類型。因為設計MongoDb的初衷就是用作分散式資料庫,所以能夠在分片環境中生成
唯一的標識符非常重要,而常規的做法:在多個伺服器上同步自動增加主鍵既費時又費力,這就是MongoDB採用
ObjectId的原因。
ObjectId採用12位元組的存儲空間,是一個由24個十六進位數字組成的字元串
    0|1|2|3|   4|5|6|     7|8    9|10|11    
    時間戳      機器      PID    計數器
如果快速創建多個ObjectId,會發現每次只有最後幾位有變化。另外,中間的幾位數字也會變化(要是在創建過程中停頓幾秒)。
這是ObjectId的創建方式導致的,如上圖

時間戳單位為秒,與隨後5個位元組組合起來,提供了秒級的唯一性。這個4個位元組隱藏了文檔的創建時間,絕大多數驅動程式都會提供
一個方法,用於從ObjectId中獲取這些信息。

因為使用的是當前時間,很多用戶擔心要對伺服器進行時鐘同步。其實沒必要,因為時間戳的實際值並不重要,只要它總是不停增加就好。
接下來3個位元組是所在主機的唯一標識符。通常是機器主機名的散列值。這樣就可以保證不同主機生成不同的ObjectId,不產生衝突

接下來連個位元組確保了在同一臺機器上併發的多個進程產生的ObjectId是唯一的

前9個位元組確保了同一秒鐘不同機器不同進程產生的ObjectId是唯一的。最後3個位元組是一個自動增加的 計數器。確保相同進程的同一秒產生的
ObjectId也是不一樣的。

#2、自動生成_id
如果插入文檔時沒有"_id"鍵,系統會自幫你創建 一個。可以由MongoDb伺服器來做這件事。
但通常會在客戶端由驅動程式完成。這一做法非常好地體現了MongoDb的哲學:能交給客戶端驅動程式來做的事情就不要交給伺服器來做。
這種理念背後的原因是:即便是像MongoDB這樣擴展性非常好的資料庫,擴展應用層也要比擴展資料庫層容易的多。將工作交給客戶端做就
減輕了資料庫擴展的負擔。
View Code

資料庫操作

#1、增
use config #如果資料庫不存在,則創建資料庫,否則切換到指定資料庫。

#2、查
show dbs #查看所有
可以看到,我們剛創建的資料庫config並不在資料庫的列表中, 要顯示它,我們需要向config資料庫插入一些數據。
db.table1.insert({'a':1})

#3、刪
use config #先切換到要刪的庫下
db.dropDatabase() #刪除當前庫

集合操作

#1、增
當第一個文檔插入時,集合就會被創建
> use database1
switched to db database1
> db.table1.insert({'a':1})
WriteResult({ "nInserted" : 1 })
> db.table2.insert({'b':2})
WriteResult({ "nInserted" : 1 })

#2、查
> show tables
table1
table2

#3、刪
> db.table1.drop()
true
> show tables
table2
 

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

-Advertisement-
Play Games
更多相關文章
  • linux連接mysql /usr/local/mysql/bin/mysql -uroot -p 輸入密碼出現Access denied for user 'root'@'localhost'(using password: YES)錯誤。 解決辦法: 1.先停止mysql 服務 2.進入mysq ...
  • 一:到mysql官網下載最新的mysql包 mysql-5.7.21-linux-glibc2.12-x86_64 https://dev.mysql.com/downloads/mysql/ 二:在linux /usr/local/中解壓mysql壓縮包 改名為mysql 三:創建用戶組mysql ...
  • 在上一章,裁剪uboot以及分區後,本章主要使uboot支持yaffs以及製作補丁 1. 修改uboot支持yaffs 首先,每個命令都會對應一個文件,比如nand命令對應的common/cmd_nand.c 而我們使用nand命令時,便會進入do_nand()函數,位於common/cmd_nan ...
  • 天蒼蒼,野茫茫,終於把oracle安裝成功了,來來訪問下資料庫,訪問失敗,咋回事,這是個啥錯誤 心裡是不是在怨恨,小編你耍我呢。no,no,no,小編如此善良的人怎麼會坑人呢,下麵小編就來講講安裝以後的步驟。 首先如果需要別人訪問你的資料庫,你要配置以下信息,還記得上一篇小編讓你記住oracle數據 ...
  • hadoop的核心組件:hdfs(分散式文件系統)、mapreduce(分散式計算框架)、Hive(基於hadoop的數據倉庫)、HBase(分散式列存資料庫)、Zookeeper(分散式協作服務)、Sqoop(數據同步工具)和Flume(日誌手機工具) hdfs(分散式文件系統): 由client ...
  • 事務是一個程式執行單元,它訪問且可能更新不同的數據項。事務對於實現資料庫中的數據更新是很關鍵的,只有這樣才能保證併發執行與各種故障不會導致資料庫處於不一致狀態。一、事務具有ACID特性:即原子性、一致性、隔離性和持久性原子性保證事務的所有影響在資料庫中要麼全部反映出來,要麼根本不反映。發生故障後數據 ...
  • Storm安裝 1、啟動zookeeper集群 2、上傳解壓storm包 3、進入解壓包,配置conf目錄下的storm.yaml文件 a) 這裡配置zookeeper節點,可以用ip或者功能變數名稱 b) 配置nimbus.host作為主節點名 1、將解壓的storm包分發到各個節點 2、scp -r a ...
  • 索引對於良好的性能非常關鍵,尤其是當表的數據量越來越大時,索引對性能(查詢)的影響愈發重要。 ...
一周排行
    -Advertisement-
    Play Games
  • 1. 說明 /* Performs operations on System.String instances that contain file or directory path information. These operations are performed in a cross-pla ...
  • 視頻地址:【WebApi+Vue3從0到1搭建《許可權管理系統》系列視頻:搭建JWT系統鑒權-嗶哩嗶哩】 https://b23.tv/R6cOcDO qq群:801913255 一、在appsettings.json中設置鑒權屬性 /*jwt鑒權*/ "JwtSetting": { "Issuer" ...
  • 引言 集成測試可在包含應用支持基礎結構(如資料庫、文件系統和網路)的級別上確保應用組件功能正常。 ASP.NET Core 通過將單元測試框架與測試 Web 主機和記憶體中測試伺服器結合使用來支持集成測試。 簡介 集成測試與單元測試相比,能夠在更廣泛的級別上評估應用的組件,確認多個組件一起工作以生成預 ...
  • 在.NET Emit編程中,我們探討了運算操作指令的重要性和應用。這些指令包括各種數學運算、位操作和比較操作,能夠在動態生成的代碼中實現對數據的處理和操作。通過這些指令,開發人員可以靈活地進行算術運算、邏輯運算和比較操作,從而實現各種複雜的演算法和邏輯......本篇之後,將進入第七部分:實戰項目 ...
  • 前言 多表頭表格是一個常見的業務需求,然而WPF中卻沒有預設實現這個功能,得益於WPF強大的控制項模板設計,我們可以通過修改控制項模板的方式自己實現它。 一、需求分析 下圖為一個典型的統計表格,統計1-12月的數據。 此時我們有一個需求,需要將月份按季度劃分,以便能夠直觀地看到季度統計數據,以下為該需求 ...
  • 如何將 ASP.NET Core MVC 項目的視圖分離到另一個項目 在當下這個年代 SPA 已是主流,人們早已忘記了 MVC 以及 Razor 的故事。但是在某些場景下 SSR 還是有意想不到效果。比如某些靜態頁面,比如追求首屏載入速度的時候。最近在項目中回歸傳統效果還是不錯。 有的時候我們希望將 ...
  • System.AggregateException: 發生一個或多個錯誤。 > Microsoft.WebTools.Shared.Exceptions.WebToolsException: 生成失敗。檢查輸出視窗瞭解更多詳細信息。 內部異常堆棧跟蹤的結尾 > (內部異常 #0) Microsoft ...
  • 引言 在上一章節我們實戰了在Asp.Net Core中的項目實戰,這一章節講解一下如何測試Asp.Net Core的中間件。 TestServer 還記得我們在集成測試中提供的TestServer嗎? TestServer 是由 Microsoft.AspNetCore.TestHost 包提供的。 ...
  • 在發現結果為真的WHEN子句時,CASE表達式的真假值判斷會終止,剩餘的WHEN子句會被忽略: CASE WHEN col_1 IN ('a', 'b') THEN '第一' WHEN col_1 IN ('a') THEN '第二' ELSE '其他' END 註意: 統一各分支返回的數據類型. ...
  • 在C#編程世界中,語法的精妙之處往往體現在那些看似微小卻極具影響力的符號與結構之中。其中,“_ =” 這一組合突然出現還真不知道什麼意思。本文將深入剖析“_ =” 的含義、工作原理及其在實際編程中的廣泛應用,揭示其作為C#語法奇兵的重要角色。 一、下劃線 _:神秘的棄元符號 下劃線 _ 在C#中並非 ...