MongoDB資料庫操作詳解:基礎篇

資料庫工作筆記發表於2023-10-08

MongoDB資料庫操作詳解:基礎篇

來源:運維家

主旨

本文主要介紹下mongodb的一些日常使用的簡單命令。


環境


mongodb資料庫

PS:如果沒有搭建的可以看下前兩天釋出的部署教程。


連線資料庫





語法:  mongo IP:Port例項:  mongo 192.168.112.130:27017


檢視資料庫












語法:  show dbs  # 檢視所有資料庫  db  # 檢視當前位於哪個資料庫中例項:  testrs:PRIMARY> show dbs  admin  0.000GB  local  0.000GB  testrs:PRIMARY>   testrs:PRIMARY> db  admin  testrs:PRIMARY>


建立(切換)資料庫













語法:  use database_name例項:  testrs:PRIMARY> use yunweijia  # 建立資料庫yunweijia   switched to db yunweijia  testrs:PRIMARY> db  # 檢視當前位於哪個資料庫中  yunweijia  testrs:PRIMARY>   testrs:PRIMARY> show dbs  # 檢視所有資料庫  admin  0.000GB  local  0.000GB  testrs:PRIMARY>
我們發現新建立的資料庫並沒有顯示是為什麼呢?因為我們需要先往資料庫中寫入一些資料,才可以顯示出來。







testrs:PRIMARY> db.yunweijia.insert({"name":"運維家"})  # 插入WriteResult({ "nInserted" : 1 })testrs:PRIMARY> show dbs  # 再次檢視,就發現新建立的資料庫顯示出來了admin      0.000GBlocal      0.000GByunweijia  0.000GBtestrs:PRIMARY>


刪除資料庫

















語法:  # 刪除當前資料庫,執行該命令的時候一定要注意自己在哪個資料庫中  db.dropDatabase()例項:  testrs:PRIMARY> show dbs  admin      0.000GB  local      0.000GB  yunweijia  0.000GB  testrs:PRIMARY> use yunweijia  switched to db yunweijia  testrs:PRIMARY> db.dropDatabase()  { "dropped" : "yunweijia", "ok" : 1 }  testrs:PRIMARY> show dbs  admin  0.000GB  local  0.000GB  testrs:PRIMARY>


建立集合

















語法:  db.createCollection(name, options)  name: 要建立的集合名稱  options: 可選引數, 指定有關記憶體大小及索引的選項    capped:(可選)如果為 true,則建立固定集合。固定集合是指有著固定大小的集合,當達到最大值時,它會自動覆蓋最早的文件。當該值為 true 時,必須指定 size 引數。    size:(可選)為固定集合指定一個最大值,即位元組數。如果 capped 為 true,也需要指定該欄位。    max:(可選)指定固定集合中包含文件的最大數量。例項:  testrs:PRIMARY> use yunweijia;  switched to db yunweijia  testrs:PRIMARY> db.createCollection("ceshi")  { "ok" : 1 }  testrs:PRIMARY> show collections  # 檢視集合  ceshi  testrs:PRIMARY>

在mongodb中你不需要建立即可,在插入一些資訊時,會自動建立集合:







testrs:PRIMARY> db.yunweijia.insert({"name":"運維家"})WriteResult({ "nInserted" : 1 })testrs:PRIMARY>testrs:PRIMARY> show collectionsceshiyunweijiatestrs:PRIMARY>


刪除集合


















語法:  db.collection.drop()例項:  testrs:PRIMARY> use yunweijia  # 切換資料庫到yunweijia  switched to db yunweijia  testrs:PRIMARY> show collections  # 檢視所有集合  ceshi  jier  suner  yunweijia  testrs:PRIMARY> db.jier.drop()  # 刪除jier集合   true  testrs:PRIMARY> show collections  # 檢視所有集合,發現jier集合被刪除了  ceshi  suner  yunweijia  testrs:PRIMARY>


插入文件

所有儲存在集合中的資料都是 BSON 格式。
BSON 是一種類似 JSON 的二進位制形式的儲存格式,是 Binary JSON 的簡稱。





























語法:  # 若插入的資料主鍵已經存在,則會拋 org.springframework.dao.DuplicateKeyException 異常,提示主鍵重複,不儲存當前資料。  db.COLLECTION_NAME.insert(document)  # 如果 _id 主鍵存在則更新資料,如果不存在就插入資料。
  db.collection.insertOne()  格式為:    db.collection.insertOne(       <document>,       {         writeConcern: <document>       }    )  # 如果 _id 主鍵存在則更新資料,如果不存在就插入資料。  db.collection.replaceOne()  # 向一個集合中插入多個文件  db.collection.insertMany()    格式:    db.collection.insertMany(       [ <document 1> , <document 2>, ... ],       {          writeConcern: <document>,          ordered: <boolean>       }    )  引數說明:  document:要寫入的文件。  writeConcern:寫入策略,預設為 1,即要求確認寫操作,0 是不要求。  ordered:指定是否按順序寫入,預設 true,按順序寫入。


例項1如下:















testrs:PRIMARY> db.col.insert({title: 'MongoDB 基礎操作',     description: 'MongoDB 是一個 Nosql 資料庫',    by: '運維家',    url: '['mongodb', 'database', 'NoSQL'],    likes: 100})WriteResult({ "nInserted" : 1 })testrs:PRIMARY> # 以上例項中 col 是我們的集合名,如果該集合不在該資料庫中, MongoDB 會自動建立該集合並插入文件。# 檢視已插入文件testrs:PRIMARY> db.col.find(){ "_id" : ObjectId("62011ae10e4263c83bd0dec8"), "title" : "MongoDB 基礎操作", "description" : "MongoDB 是一個 Nosql 資料庫", "by" : "運維家", "url" : "[ "mongodb", "database", "NoSQL" ], "likes" : 100 }testrs:PRIMARY>


例項2如下:

先將資料定義為一個變數,然後執行插入操作。




























testrs:PRIMARY> document=({title: 'MongoDB 基礎操作',     description: 'MongoDB 是一個 Nosql 資料庫',    by: '運維家',    url: '['mongodb', 'database', 'NoSQL'],    likes: 100});# 結果顯示如下{        "title" : "MongoDB 基礎操作",        "description" : "MongoDB 是一個 Nosql 資料庫",        "by" : "運維家",        "url" : "[                "mongodb",                "database",                "NoSQL"        ],        "likes" : 100}# 執行插入操作testrs:PRIMARY> db.col.insert(document)WriteResult({ "nInserted" : 1 })testrs:PRIMARY> db.col.find(){ "_id" : ObjectId("62011ae10e4263c83bd0dec8"), "title" : "MongoDB 基礎操作", "description" : "MongoDB 是一個 Nosql 資料庫", "by" : "運維家", "url" : "[ "mongodb", "database", "NoSQL" ], "likes" : 100 }{ "_id" : ObjectId("62011c0f0e4263c83bd0dec9"), "title" : "MongoDB 基礎操作", "description" : "MongoDB 是一個 Nosql 資料庫", "by" : "運維家", "url" : "[ "mongodb", "database", "NoSQL" ], "likes" : 100 }testrs:PRIMARY>


更新文件
















































語法:  db.collection.update(     <query>,     <update>,     {       upsert: <boolean>,       multi: <boolean>,       writeConcern: <document>     }  )  引數解釋:  query : update的查詢條件,類似sql update查詢內where後面的。  update : update的物件和一些更新的運算子(如$,$inc...)等,也可以理解為sql update查詢內set後面的  upsert : 可選,這個引數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,預設是false,不插入。  multi : 可選,mongodb 預設是false,只更新找到的第一條記錄,如果這個引數為true,就把按條件查出來多條記錄全部更新。  writeConcern :可選,丟擲異常的級別。例項:  testrs:PRIMARY> db.col.update({'title':'MongoDB 基礎操作'},{$set:{'title':'MongoDB資料庫'}})  WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })  testrs:PRIMARY> db.col.find().pretty()  {          "_id" : ObjectId("62011ae10e4263c83bd0dec8"),          "title" : "MongoDB資料庫",          "description" : "MongoDB 是一個 Nosql 資料庫",          "by" : "運維家",          "url" : "[                  "mongodb",                  "database",                  "NoSQL"          ],          "likes" : 100  }  {          "_id" : ObjectId("62011c0f0e4263c83bd0dec9"),          "title" : "MongoDB 基礎操作",          "description" : "MongoDB 是一個 Nosql 資料庫",          "by" : "運維家",          "url" : "[                  "mongodb",                  "database",                  "NoSQL"          ],          "likes" : 100  }  testrs:PRIMARY
可以看到標題(title)由原來的 "MongoDB 基礎操作" ,更新為了 "MongoDB 資料庫"。
以上語句只會修改第一條發現的文件,如果你要修改多條相同的文件,則需要設定 multi 引數為 true。

db.col.update({'title':'MongoDB 基礎操作'},{$set:{'title':'MongoDB資料庫'}},{multi:true})


刪除文件













語法:  db.collection.remove(     <query>,     {       justOne: <boolean>,       writeConcern: <document>     }  )  引數解釋:  query :(可選)刪除的文件的條件。  justOne : (可選)如果設為 true 或 1,則只刪除一個文件,如果不設定該引數,或使用預設值 false,則刪除所有匹配條件的文件。  writeConcern :(可選)丟擲異常的級別。


例項如下:



















# 新插入一條資料,用來比較testrs:PRIMARY> db.col.insert({title: 'MongoDB 基礎操作', ...     description: 'MongoDB 是一個 Nosql 資料庫',...     by: '運維家',...     url: '['mongodb', 'database', 'NoSQL'],...     likes: 100... })WriteResult({ "nInserted" : 1 })testrs:PRIMARY> db.col.find()  # 可以看到有三條,其中兩條資料title一樣{ "_id" : ObjectId("62011ae10e4263c83bd0dec8"), "title" : "MongoDB資料庫", "description" : "MongoDB 是一個 Nosql 資料庫", "by" : "運維家", "url" : "[ "mongodb", "database", "NoSQL" ], "likes" : 100 }{ "_id" : ObjectId("62011c0f0e4263c83bd0dec9"), "title" : "MongoDB 基礎操作", "description" : "MongoDB 是一個 Nosql 資料庫", "by" : "運維家", "url" : "[ "mongodb", "database", "NoSQL" ], "likes" : 100 }{ "_id" : ObjectId("62011e580e4263c83bd0deca"), "title" : "MongoDB 基礎操作", "description" : "MongoDB 是一個 Nosql 資料庫", "by" : "運維家", "url" : "[ "mongodb", "database", "NoSQL" ], "likes" : 100 }testrs:PRIMARY> db.col.remove({'title':'MongoDB 基礎操作'})  # 根據title為條件進行刪除WriteResult({ "nRemoved" : 2 })testrs:PRIMARY> db.col.find()  # 結果是將兩條title一致的全部進行刪除{ "_id" : ObjectId("62011ae10e4263c83bd0dec8"), "title" : "MongoDB資料庫", "description" : "MongoDB 是一個 Nosql 資料庫", "by" : "運維家", "url" : "[ "mongodb", "database", "NoSQL" ], "likes" : 100 }testrs:PRIMARY>
如果你只想刪除第一條找到的記錄可以設定 justOne 為 1,如下所示:

db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
如果你想刪除所有資料,可以使用以下方式(類似常規 SQL 的 truncate 命令):


>db.col.remove({})>db.col.find()


查詢文件
























語法:  db.collection.find(query, projection)  引數解釋:  query :可選,使用查詢運算子指定查詢條件  projection :可選,使用投影運算子指定返回的鍵。查詢時返回文件中所有鍵值, 只需省略該引數即可(預設省略)。  如果你需要以易讀的方式來讀取資料,可以使用 pretty() 方法,語法格式如下:  db.col.find().pretty()例項:  testrs:PRIMARY> db.col.find().pretty()  {          "_id" : ObjectId("62011ae10e4263c83bd0dec8"),          "title" : "MongoDB資料庫",          "description" : "MongoDB 是一個 Nosql 資料庫",          "by" : "運維家",          "url" : "[                  "mongodb",                  "database",                  "NoSQL"          ],          "likes" : 100  }  testrs:PRIMARY>


至此,mongodb的基礎操作,結束。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70027826/viewspace-2987356/,如需轉載,請註明出處,否則將追究法律責任。

相關文章