<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## NoSQL?簡介 NoSQL(NoSQL = Not Only SQL ),意即"不僅僅是SQL“。NoSQL,指的是非關系型的數據庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同于傳統的關系型數據庫的數據庫管理系統的統稱。 ## MongoDB簡介 MongoDB 是由C++語言編寫的,是一個基于分布式文件存儲的開源數據庫系統。在高負載的情況下,添加更多的節點,可以保證服務器性能。 MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。 MongoDB 將數據存儲為一個文檔,數據結構由鍵值(key=>value)對組成。 MongoDB 文檔類似于 JSON 對象。字段值可以包含其他文檔,數組及文檔數組。 **主要特點** 1. MongoDB的提供了一個面向文檔存儲,操作起來比較簡單和容易。 2. 可以在MongoDB記錄中設置任何屬性的索引 (如:FirstName="Sameer",Address="8.Gandhi Road")來實現更快的排序。 3. 可以通過本地或者網絡創建數據鏡像,這使得MongoDB有更強的擴展性。 4. 如果負載的增加(需要更多的存儲空間和更強的處理能力) ,它可以分布在計算機網絡 中的其他節點上這就是所謂的分片。 5. Mongo支持豐富的查詢表達式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。 6. MongoDb 使用update()命令可以實現替換完成的文檔(數據)或者一些指定的數據字段 。Mongodb中的Map/reduce主要是用來對數據進行批量處理和聚合操作。 7. Map和Reduce。Map函數調用emit(key,value)遍歷集合中所有的記錄,將key與value傳給Reduce函數進行處理。 8. Map函數和Reduce函數是使用Javascript編寫的,并可以通過db.runCommand或mapreduce命令來執行MapReduce操作。 9. GridFS是MongoDB中的一個內置功能,可以用于存放大量小文件。 10. MongoDB允許在服務端執行腳本,可以用Javascript編寫某個函數,直接在服務端執行,也可以把函數的定義存儲在服務端,下次直接調用即可。 11. MongoDB支持各種編程語言:RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。1 12. MongoDB安裝簡單。 ## MongoDB概念介紹 | SQL術語/概念 | MongoDB術語/概念 | 解釋/說明 | | ------------ | ---------------- | ----------------------------------- | | database | database | 數據庫 | | table | collection | 表/集合 | | row | document | 行/文檔 | | column | filed | 數據字段/域 | | index | index | 索引 | | primary key | primary key | 主鍵,MongoDB自動將_id字段設置為主鍵 | 一個集合中的文檔實例 ```json { "username":"Tim", "age":18 } ``` ## MongoDB相關操作 ```shell show dbs #查看數據庫列表 use test #創建并切換到test庫 show collections #查看數據庫的所有集合 # 集合相關操作 db.testCollection.insert({"name":"hello"}) #創建testCollection庫并插入數據 db.testCollection.find() #查詢testCollection所有數據 db.testCollection.drop()# 刪除集合 db.testCollection.find().limit(5) #顯示5條 #文檔操作 db.users.find( {age: {$gt: 18}}, //查詢條件 {name: 1, address: 1} //查詢顯示字段 ).limit(5) db.users.update( {age: {$gt: 18}}, {$set: {status: "A"}}, {multi: true} //multi指所有行修改 ) #統計文檔的個數 db.testCollection.count() ``` ## MongoDB 數據類型 下表為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。用于創建文檔的 ID。 | | Binary Data | 二進制數據。用于存儲二進制數據。 | | Code | 代碼類型。用于在文檔中存儲 JavaScript 代碼。 | | Regular expression | 正則表達式類型。用于存儲正則表達式。 | ### 文檔操作 #### 1. 插入 ```shell db.Collection.insertOne({"user":"zhang0"}) #插入單條 db.collection.insertMany([{},{}]) #插入多條 ``` #### 2. 查詢 ```json [ { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" }, { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" }, { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" }, { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" }, { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" } ] ``` ```shell db.inventory.find() #查找所有 =SELECT * FROM inventory db.inventory.find( { "size.h": { $lt: 15 } } ) ``` - 條件查詢 ```shell db.inventory.find( { status: "D" } ) # SELECT * FROM inventory WHERE status = "D" ``` - in查詢 ```shell db.inventory.find( { status: { $in: [ "A", "D" ] } } ) # SELECT * FROM inventory WHERE status in ("A", "D") ``` - AND ```shell db.inventory.find( { status: "A", qty: { $lt: 30 } } ) #SELECT * FROM inventory WHERE status = "A" AND qty < 30 ``` - OR ```shell db.inventory.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } ) # SELECT * FROM inventory WHERE status = "A" OR qty < 30 ``` - 指定filed 等于1 標識查詢。等于0 不顯示。默認顯示_id ```shell db.inventory.find( { status: "A" }, { item: 1, status: 1 } ) # SELECT _id, item, status from inventory WHERE status = "A" ``` #### 3. 修改 - updateOne 更新單條記錄 ```shell db.inventory.updateOne( { item: "paper" }, { $set: { "size.uom": "cm", status: "P" }, $currentDate: { lastModified: true } } ) # UPDATE inventory SET item = paper WHERE `size.uom` = 'cm' AND status = 'p' LIMIT 1 ``` - updateMany更新多條 ```shell db.inventory.updateMany( { "qty": { $lt: 50 } }, { $set: { "size.uom": "in", status: "P" }, $currentDate: { lastModified: true } } ) ``` - repalce ```shell db.inventory.replaceOne( { item: "paper" }, { item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 40 } ] } ) ``` #### 4. 刪除 - deleteOne 刪除單條 ```shell db.orders.deleteOne( { w : "majority", wtimeout : 100 } ); # DELETE FROM orders where w = "majority" AND wtimeout = 100 ``` - remove 刪除整個文檔 ```shell db.orders.remove() # DELETE FROM orders ``` #### 5. 創建索引 ```shell db.inventory.createIndex({"name":"username"}) ``` `$text `查詢運算符 ```shell db.stores.find( { $text: { $search: "java coffee shop" } } ) ``` #### 5. 聚合操作 MongoDB中聚合(aggregate)主要用于處理數據(諸如統計平均值,求和等),并返回計算后的數據結果。有點類似sql語句中的 count(*)。 - aggregate() 方法 ```shell db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}]) # select by_user, count(*) from mycol group by by_user ``` | $sum | 計算總和。 | db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}]) | | --------- | ---------------------------------------------- | ------------------------------------------------------------ | | $avg | 計算平均值 | db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}]) | | $min | 獲取集合中所有文檔對應值得最小值。 | db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}]) | | $max | 獲取集合中所有文檔對應值得最大值。 | db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}]) | | $push | 在結果文檔中插入值到一個數組中。 | db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}]) | | $addToSet | 在結果文檔中插入值到一個數組中,但不創建副本。 | db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}]) | | $first | 根據資源文檔的排序獲取第一個文檔數據。 | db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}]) | | $last | 根據資源文檔的排序獲取最后一個文檔數據 | db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}]) | 聚合框架中常用的幾個操作: - $project:修改輸入文檔的結構。可以用來重命名、增加或刪除域,也可以用于創建計算結果以及嵌套文檔。 - $match:用于過濾數據,只輸出符合條件的文檔。$match使用MongoDB的標準查詢操作。 - $limit:用來限制MongoDB聚合管道返回的文檔數。 - $skip:在聚合管道中跳過指定數量的文檔,并返回余下的文檔。 - $unwind:將文檔中的某一個數組類型字段拆分成多條,每條包含數組中的一個值。 - $group:將集合中的文檔分組,可用于統計結果。 - $sort:將輸入文檔排序后輸出。 - $geoNear:輸出接近某一地理位置的有序文檔 ```shell db.articles.aggregate( [ { $match : { score : { $gt : 70, $lte : 90 } } }, { $group: { _id: null, count: { $sum: 1 } } } ] ); #$match用于獲取分數大于70小于或等于90記錄,然后將符合條件的記錄送到下一階段$group管道操作符進行處理。 ``` ### 原子性和事務處理 在MongoDB中,一個寫操作的原子性是基于單個文檔的,即使寫操作是在單個文檔內部更改多個嵌套文檔。 當一個寫操作修改了多個文檔,每個文檔的更新是具有原子性的,但是整個操作作為一個整體是不具有原子性的,并且與其他操作可能會有所交替。但是,您可以使用:update:[`](http://www.mongoing.com/docs/core/write-operations-atomicity.html#id1)$isolated`操作將多個文檔單的寫操作*隔離*成單個的寫操作, > update:`$isolated`操作將使寫操作在集合上獲得一個排他鎖,甚至對于文檔級別的鎖存儲引擎比如WiredTiger也是這樣處理的。這也就是說在執行:update:`$isolated`操作運行期間會導致WiredTiger單線程運行。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看