MongoDB簡介與增刪改查

來源:互聯網
上載者:User

MongoDB簡介與增刪改查

一、簡介

MongoDB 是由C++語言編寫的,是一個基於分布式檔案儲存體的開來源資料庫系統。MongoDB 旨在為WEB應用提供可擴充的高效能資料儲存解決方案。MongoDB 將資料存放區為一個文檔,資料結構由索引值(key=>value)對組成。MongoDB 文檔類似於 JSON 對象。欄位值可以包含其他文檔,數組及文檔數組。

mongodb資料類型:

資料類型 描述
String 字串。儲存資料常用的資料類型。在 MongoDB 中,UTF-8 編碼的字串才是合法的。
Integer 整型數值。用於儲存數值。根據你所採用的伺服器,可分為 32 位或 64 位元。
Boolean 布爾值。用於儲存布爾值(真/假)。
Double 雙精確度浮點值。用於儲存浮點值。
Min/Max keys 將一個值與 BSON(二進位的 JSON)元素的最低值和最高值相對比。
Arrays 用於將數組或列表或多個值儲存為一個鍵。
Timestamp 時間戳記。記錄文檔修改或添加的具體時間。
Object 用於內嵌文檔。
Null 用於建立空值。
Symbol 符號。該資料類型基本上等同於字串類型,但不同的是,它一般用於採用特殊符號類型的語言。
Date 日期時間。用 UNIX 時間格式來儲存當前日期或時間。你可以指定自己的日期時間:建立 Date 對象,傳入年月日資訊。
Object ID 物件識別碼。用於建立文檔的 ID。
Binary Data 位元據。用於儲存位元據。
Code 代碼類型。用於在文檔中儲存 JavaScript 代碼。
Regular expression Regex類型。用於儲存Regex。

二、操作

1、資料庫操作指令

(1)建立資料庫

命令:use dbname ,例:use test 如果資料庫test存在則選中test資料庫,如果不存在則建立資料庫test。

(2)查看所有資料庫

命令:show dbs

(3)刪除資料庫

命令:db.dropDatabase() 即可刪除當前資料庫

2、文檔操作指令

mongodb中的文檔相當於關係型資料庫中的row,文檔的資料結構BSON和JSON基本一樣。

(1)插入文檔

MongoDB 使用 insert() 或 save() 方法向集合中插入文檔,文法如下:db.COLLECTION_NAME.insert(document).

例:db.mycol.insert({name:'test1',age:20,sex:'male'}),其中mycol是集合名稱,如果該集合不存在則mongodb會先自動建立。

也可以使用db.COLLECTION_NAME.save(document)插入文檔,類似於insert,如果指定了_id欄位則更新該_id的文檔。

(2)更新文檔

mongodb使用update或者save更新文檔,update文法:

db.collection.update(
  <query>,
  <update>,
  {
    upsert: <boolean>,
    multi: <boolean>,
    writeConcern: <document>
  }
)

query:update的查詢條件;

update:update的對象和一些更新的操作符(如$,$inc...)等,也可以理解為sql update查詢內set後面的;

upsert:可選,這個參數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,預設是false,不插入。

multi:可選,mongodb 預設是false,只更新找到的第一條記錄,如果這個參數為true,就把按條件查出來多條記錄全部更新。

writeConcern:可選,拋出異常的層級。

例:首先插入一條文檔:db.mycol.insert({name:'test1',age:1,sex:'male'}),然後再執行更新操作:db.mycol.update({'name':'test1'},{$set:{'sex':'formale'}})結果如下:

如果需要修改合格多條文檔則把multi設為true。例:db.mycol.update({'name':'test1'},{$set:{'sex':'formale'}},{multi:true})

save方法:通過傳入的文檔來替換已有文檔。文法格式如下:

db.collection.save(
  <document>,
  {
    writeConcern: <document>
  }
)

document:文檔資料,writeConcern:拋出異常的層級。

  (3)刪除文檔

  mongodb使用db.col.remove()來刪除文檔,文法結構如下(2.6版本之前):

db.collection.remove(
  <query>,
  <justOne>
)

2.6版本之後:

db.collection.remove(
  <query>,
  {
    justOne: <boolean>,
    writeConcern: <document>
  }
)

  query(可選):刪除的條件,justOne(可選):如果設定為true或1則只刪除一條,writeConcert(可選):拋出異常的層級。

  例:db.mycol.remove({'name':'test1'})

  (3)查詢文檔

  db.COLLECTION_NAME.find()方法以非結構化的方式顯示所有資料,db.COLLECTION_NAME.find().pretty()方法以格式化的方式顯示所有資料。除此之外還有findOne()方法只顯示一個文檔。

  mongodb與關係型資料庫where比較:

操作 格式 範例 RDBMS中的類似語句
等於 {<key>:<value>} db.col.find({"by":"菜鳥教程"}).pretty() where by = '菜鳥教程'
小於 {<key>:{$lt:<value>}} db.col.find({"likes":{$lt:50}}).pretty() where likes < 50
小於或等於 {<key>:{$lte:<value>}} db.col.find({"likes":{$lte:50}}).pretty() where likes <= 50
大於 {<key>:{$gt:<value>}} db.col.find({"likes":{$gt:50}}).pretty() where likes > 50
大於或等於 {<key>:{$gte:<value>}} db.col.find({"likes":{$gte:50}}).pretty() where likes >= 50
不等於 {<key>:{$ne:<value>}} db.col.find({"likes":{$ne:50}}).pretty() where likes != 50

mongodb AND條件:mongodb的find()方法可以傳入多個鍵(key),每個鍵用逗號,隔開,文法格式如下:

db.col.find({key1:value1, key2:value2}).pretty()

例:db.mycol.find({'name':'tes1','sex':'formale'}).pretty() ,該句的效果類似sql: where name='test1' and sex='formale',

mongodb OR條件:MongoDB OR 條件陳述式使用了關鍵字 $or,文法格式如下:

db.col.find(
  {
      $or: [
        {key1: value1}, {key2:value2}
      ]
  }
).pretty()

更多MongoDB相關教程見以下內容:

CentOS 編譯安裝 MongoDB與mongoDB的php擴充

CentOS 6 使用 yum 安裝MongoDB及伺服器端配置

Ubuntu 13.04下安裝MongoDB2.4.3

MongoDB入門必讀(概念與實戰並重)

Ubunu 14.04下MongoDB的安裝指南

《MongoDB 權威指南》(MongoDB: The Definitive Guide)英文文字版[PDF]

Nagios監控MongoDB分區叢集服務實戰

基於CentOS 6.5作業系統搭建MongoDB服務

MongoDB 的詳細介紹:請點這裡
MongoDB 的:請點這裡

本文永久更新連結地址:

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.