<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      MongoDB 操作

      MongoDB
      MongoDB是一個提供了高性能、高可用及自動伸縮功能的開源的文檔數據庫(Document Database),由C++語言編寫。旨在為web應用提供可擴展的高性能數據存儲解決方案
      文檔數據庫
      在MongoDB中一條記錄就是一個文檔,文檔本身類似于JSON對象,其數據結構是組合的鍵值對。
      文檔的優勢在于:
      1) 文檔可以對應到許多編程語言內置的數據類型
      2) 內嵌的文檔和數組結構減少了跨表查詢
      3) 自由的表結構支持流暢的多態
       
      MongoDB特點
      1、模式自由:可以把不同結構的文檔存儲在同一個數據庫里
      2、面向集合的存儲:適合存儲JSON風格文件的形式
      3、完整的索引支持:對任何屬性可索引
      4、復制和高可用:支持服務器間的數據復制,支持主-從模式
      5、自動分片:自動分片功能支持水平的數據庫集群,可動態添加額外的機器
      6、豐富的查詢:支持豐富的查詢表達式,查看指令使用JSON形式的標記,可輕易查詢文檔中的內嵌對象及數組
      7、快速就地更新:查詢優化器會分析查詢表達式,并生成一個高效的查詢計劃
      8、高效的傳統存儲方式:支持二進制數據及大型對象(如照片或圖片)
       
      MongoDB基本概念
      1、數據庫 database
      2、集合 collection,類似于數據表
      3、文檔 document, 類似于記錄
      4、字段 field,類似于字段
       
       
      配置文件其他選項說明 :
       
      數據庫基本操作
      1、查看數據庫
      > show dbs
      admin 0.000GB
      local 0.000GB
       
      2、查看當前數據庫
      > db
      game
      > db.getName()
      game
       
      3、創建數據庫
      > use <db_name>
      數據庫如果存在,則為切換數據庫,否則為創建數據庫
       
      > use game
      switched to db game
       
      > show dbs
      admin 0.000GB
      local 0.000GB
       
      此時使用show dbs命令查看不到game庫,因為game庫中沒有數據;可通過以下方式在game庫中創建一個集合tb01
       
      > use game
      switched to db game
      > db.createCollection("tb01")
      { "ok" : 1 }
      > show dbs
      admin 0.000GB
      game 0.000GB
      local 0.000GB
       
      4、刪除當前使用的數據庫
       
      > db.dropDatabase()
      { "dropped" : "game", "ok" : 1 }
       
      > show dbs
      admin 0.000GB
      local 0.000GB
       
      5、查看當前數據庫狀態
      > db.stats()
      {
      "db" : "game",
      "collections" : 1,
      "views" : 0,
      "objects" : 0,
      "avgObjSize" : 0,
      "dataSize" : 0,
      "storageSize" : 4096,
      "numExtents" : 0,
      "indexes" : 1,
      "indexSize" : 4096,
      "ok" : 1
      }
       
      6、顯示數據庫版本
      > db.version()
      3.4.3
       
      7、查看數據庫當前監聽地址
      > db.getMongo()
      connection to 127.0.0.1:27017
      集合collection相關操作
       
      1、查看數據庫中的集合
      > use game
      switched to db game
      > show collections
      tb01
       
      2、創建集合
      語法:
      db.createCollection(name, { size : ..., capped : ..., max : ... } )
      name:集合名稱
      capped:指定為true時,表示創建上限集合(即當集合中文檔數量達到一定量時,會覆蓋舊的文檔),此參數為true時,需要指定size參數
      size:指定該集合中文檔的大小,以Byte為單位
      max:指定該集合中最大文檔數量
      > db.createCollection("tb02")
      { "ok" : 1 }
      > db.createCollection("tb03",{capped: true, size: 100000, max: 10000})
      { "ok" : 1 }
      > show collections
      tb01
      tb02
      tb03
       
      向一個不存在的集合中插入文檔時,也會自動創建該集合
      > db.tb04.insert({"name": "martin", "age": 20})
      > show collections
      tb01
      tb02
      tb03
      tb04
      3、獲取指定名稱的集合
      > db.getCollection("tb01")
      game.tb01
      > db.getCollection("tb02")
      game.tb02
      4、查看當前數據庫中所有集合名稱
      > db.getCollectionNames()
      [ "tb01", "tb02", "tb03", "tb04" ]
      5、刪除集合
      > db.tb01.drop()
      true
      > db.tb02.drop()
      true
       
      文檔增、刪、改、查
      MongoDB支持許多數據類型
      字符串 - 這是用于存儲數據的最常用的數據類型。MongoDB中的字符串必須為UTF-8。
      整型 - 此類型用于存儲數值。 整數可以是32位或64位,具體取決于服務器。
      布爾類型 - 此類型用于存儲布爾值(true / false)值。
      雙精度浮點數 - 此類型用于存儲浮點值。
      最小/最大鍵 - 此類型用于將值與最小和最大BSON元素進行比較。
      數組 - 此類型用于將數組或列表或多個值存儲到一個鍵中。
      時間戳 - ctimestamp,當文檔被修改或添加時,可以方便地進行錄制。
      對象 - 此數據類型用于嵌入式文檔。
      對象 - 此數據類型用于嵌入式文檔。
      Null - 此類型用于存儲Null值。
      符號 - 該數據類型與字符串相同; 但是,通常保留用于使用特定符號類型的語言。
      日期 - 此數據類型用于以UNIX時間格式存儲當前日期或時間。您可以通過創建日期對象并將日,月,年的日期進行指定自己需要的日期時間。
      對象ID - 此數據類型用于存儲文檔的ID。
      二進制數據 - 此數據類型用于存儲二進制數據。
      代碼 - 此數據類型用于將JavaScript代碼存儲到文檔中。
      正則表達式 - 此數據類型用于存儲正則表達式。
       
      1、插入文檔
      語法1):
      > db.<collection_name>.insert(document)
       
      示例:
      > db.tb01.insert({id:001, name: "martin", description: "test"})
      WriteResult({ "nInserted" : 1 })
      > db.tb01.insert({
      ... _id: 100,
      ... title: "MongoDB Overview",
      ... description: "MongoDB is no sql database",
      ... by: "martin",
      ... url: "www.martin.com",
      ... tags: ["mongodb","database","NoSQL"],
      ... likes: 100
      ... })
      WriteResult({ "nInserted" : 1 })
      >
       
      在插入文檔時如果不指定_id,則mongoDB會為此文檔生成一個唯一的objectID
      同時插入多個文檔
      > db.tb01.insert([
      ... {
      ... _id: 101,
      ... title: "MongoDB Guide",
      ... description: "MongoDB is no sql database",
      ... by: "martin",
      ... url: "www.martin.com",
      ... tags: ["mongodb","database","NoSQL"],
      ... likes: 100
      ... },
      ...
      ... {
      ... _id: 102,
      ... title: "NoSQL Database",
      ... description: "NoSQL database doesn't have tables",
      ... by: "martin",
      ... url: "www.martin.com",
      ... tags: ["mongodb","database","NoSQL"],
      ... likes: 210,
      ... comments: [
      ... {
      ... user: "user1",
      ... message: "My first comment",
      ... dateCreated: new Date(2017,12,5,19,24),
      ... like: 0
      ... }
      ... ]
      ... },
      ...
      ... {
      ... _id: 103,
      ... title: "Python Quick Guide",
      ... description: "Python Quick start",
      ... by: "martin",
      ... url: "www.martin.com",
      ... tags: ["Python","database","NoSQL"],
      ... likes: 30,
      ... comments: [
      ... {
      ... user: "user1",
      ... message: "My first comment",
      ... dateCreated: new date(2018,11,10,2,35),
      ... like: 580
      ... }
      ... ]
      ... }
      ... ])
       
       
       
      語法2):
      > db.collection_name.insertOne(document)
      此方法會返回一個插入文檔的ObjectID
      示例:
      > db.inventory.insertOne(
      ... { item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" }}
      ... )
      {
      "acknowledged" : true,
      "insertedId" : ObjectId("5a2683e4b4720e8514e971a1")
      }
       
      語法3):
      > db.collection_name.insertMany(document)
      此方法會返回文檔的objectID
      > db.inventory.insertMany([
      ... { item: "journal", qty: 25, tags: ["blank","red"], size: {h: 14, w: 21, uom: "cm"}},
      ... { item: "mat", qty: 85, tags: ["gray"], size: {h: 27.9, w: 35.5, uom: "cm"}},
      ... { item: "mousepad", qty: 25, tags: ["gel", "blue"], size: {h: 19, w: 22.85, uom: "cm"}}
      ... ])
      {
      "acknowledged" : true,
      "insertedIds" : [
      ObjectId("5a2684d6b4720e8514e971a2"),
      ObjectId("5a2684d6b4720e8514e971a3"),
      ObjectId("5a2684d6b4720e8514e971a4")
      ]
      }
      >
       
      查詢文檔
      語法:
      > db.collection_name.find()
      該方法以非結構化的方式顯示所有數據,如果想使用結構化方式顯示數據,需要使用pretty()方法
      > db.collection_name.find().pretty()
      > db.tb01.find().pretty()
       
      mongodb比較運算符的使用:
      1、{<key>: <value>} 等于
      > db.tb01.find(
      ... { _id: 103 }
      ... ).pretty()
       
      2、{<key>: {$lt:<value>}} 小于
      > db.tb01.find(
      ... {_id: {$lt: 102}}
      ... ).pretty()
       
      3、{<key>: {$lte:<value>}} 小于等于
      > db.tb01.find(
      ... {_id: {$lte: 102}}
      ... ).pretty()
       
      4、{<key>: {$gt:<value>}} 大于
      > db.tb01.find(
      ... {_id: {$gt: 102}}
      ... ).pretty()
       
      5、{<key>: {$gte:<value>}} 大于等于
      > db.tb01.find(
      ... { _id: {$gte: 102} }
      ... ).pretty()
       
      6、{<key>: {$ne:<value>}} 不等于
      > db.tb01.find(
      ... {_id: {$ne: 102}}
      ... ).pretty()
       
      邏輯運算符的使用
      1、AND
       
      語法:
      > db.collection_name.find(
      {
      $and: [
      {key: value}, {key: value}
      ]
      }
      )
       
      > db.tb01.find(
      ... {
      ... $and: [
      ... { by: "martin" }, { title: "MongoDB Overview" }
      ... ]
      ... }
      ... ).pretty()
      {
      "_id" : 100,
      "title" : "MongoDB Overview",
      "description" : "MongoDB is no sql database",
      "by" : "martin",
      "url" : "www.martin.com",
      "tags" : [
      "mongodb",
      "database",
      "NoSQL"
      ],
      "likes" : 100
      }
      >
       
       
       
       
      2、OR
       
      語法:
       
      > db.collection_name.find(
      {
      $or: [
      {key: value}, {key: value}
      ]
      }
      )
       
       
      > db.tb01.find(
      ... {
      ... $or: [
      ... { title: "MongoDB Overview" }, { title: "MongoDB Guide" }
      ... ]
      ... }
      ... ).pretty()
       
       
       
      3、AND/OR同時使用
       
      > db.tb01.find(
      ... {
      ... by: "martin",
      ... $or: [
      ... { title: "MongoDB Overview" }, { title: "MongoDB Guide" }
      ... ]
      ... }
      ... ).pretty()
       
       
       
       
       
      顯示指定字段的數據(投影)
       
      > db.collection_name.find({},{key:1,key:1,...})
       
      MongoDB的find()方法,其中第二個參數表示顯示指定字段的數據,其中上述格式中key為指定的字段名稱,值為1表示僅顯示該字段的數據
       
      > db.inventory.find({},{_id:1, item:1})
      { "_id" : ObjectId("5a2683e4b4720e8514e971a1"), "item" : "canvas" }
      { "_id" : ObjectId("5a2684d6b4720e8514e971a2"), "item" : "journal" }
      { "_id" : ObjectId("5a2684d6b4720e8514e971a3"), "item" : "mat" }
      { "_id" : ObjectId("5a2684d6b4720e8514e971a4"), "item" : "mousepad" }
      { "_id" : ObjectId("5a268f122b720c3680067af1"), "item" : "journal" }
       
       
      find()方法總是顯示_id字段的數據,如果不想顯示_id字段的數據,則需要把_id設置為0
       
      > db.inventory.find({},{_id:0, item:1})
      { "item" : "canvas" }
      { "item" : "journal" }
      { "item" : "mat" }
      { "item" : "mousepad" }
      { "item" : "journal" }
       
       
       
       
      限制顯示文檔的數量
       
      limit(number)方法
       
      限制 MongoDB 中返回的記錄數,需要使用limit()方法。
      該方法接受一個數字類型參數,它表示要顯示的文檔數。
       
       
      示例:顯示結果集的前三行記錄
       
      > db.inventory.find({},{_id:0, item:1}).limit(3)
      { "item" : "canvas" }
      { "item" : "journal" }
      { "item" : "mat" }
      >
       
       
      skip(number)方法
       
      skip()表示要跳過的記錄數量
       
      示例:跳過結果集的前三行不顯示
       
      > db.inventory.find({},{_id:0, item:1}).skip(3)
      { "item" : "mousepad" }
      { "item" : "journal" }
      { "item" : "notebook" }
      { "item" : "paper" }
      { "item" : "planner" }
      { "item" : "postcard" }
       
       
      示例:僅顯示第三行記錄
       
      > db.inventory.find({},{_id:0, item:1}).skip(2).limit(1)
      { "item" : "mat" }
      >
       
       
      按字段排序顯示數據
       
      排序顯示數據需要使用sort()方法,語法如下:
       
      > db.collection_name.find().sort({key:1})
       
      其中sort({key:1}),1表示升序,-1表示降序
       
       
      示例:按item字段升序顯示數據
       
      > db.inventory.find({},{_id:1, item: 1}).sort({item:1})
      { "_id" : ObjectId("5a2683e4b4720e8514e971a1"), "item" : "canvas" }
      { "_id" : ObjectId("5a2684d6b4720e8514e971a2"), "item" : "journal" }
      { "_id" : ObjectId("5a268f122b720c3680067af1"), "item" : "journal" }
      { "_id" : ObjectId("5a2684d6b4720e8514e971a3"), "item" : "mat" }
      { "_id" : ObjectId("5a2684d6b4720e8514e971a4"), "item" : "mousepad" }
       
       
      示例:按item字段降序顯示數據
       
      > db.inventory.find({},{_id:1, item:1}).sort({item:-1})
      { "_id" : ObjectId("5a268f122b720c3680067af5"), "item" : "postcard" }
      { "_id" : ObjectId("5a268f122b720c3680067af4"), "item" : "planner" }
      { "_id" : ObjectId("5a268f122b720c3680067af3"), "item" : "paper" }
      { "_id" : ObjectId("5a268f122b720c3680067af2"), "item" : "notebook" }
      { "_id" : ObjectId("5a2684d6b4720e8514e971a4"), "item" : "mousepad" }
      { "_id" : ObjectId("5a2684d6b4720e8514e971a3"), "item" : "mat" }
       
       
      聚合運算操作
       
       
      示例01:按by_user字段進行分組,并對出現的用戶進行+1操作
       
      > db.article.aggregate(
      ... [
      ... { $group: {_id: "$by_user", number: {$sum: 1}} }
      ... ]
      ... )
      { "_id" : "Curry", "number" : 1 }
      { "_id" : "Kuber", "number" : 1 }
      { "_id" : "Maxsu", "number" : 2 }
       
       
      示例02:按by_user進行分組, 并對字段likes進行平均值運算
       
      > db.article.aggregate(
      ... [
      ... { $group: {_id: "$by_user", number: {$avg: "$likes"}} }
      ... ]
      ... )
      { "_id" : "Curry", "number" : 350 }
      { "_id" : "Kuber", "number" : 750 }
      { "_id" : "Maxsu", "number" : 55 }
      >
       
       
      示例03:按by_user進行分組,并對字段likes計算最小值
       
      > db.article.aggregate(
      ... [
      ... { $group: {_id: "$by_user", number: {$min: "$likes"}} }
      ... ]
      ... )
      { "_id" : "Curry", "number" : 350 }
      { "_id" : "Kuber", "number" : 750 }
      { "_id" : "Maxsu", "number" : 10 }
      >
       
       
      示例04:按by_user進行分組, 并對字段likes計算最大值
       
      > db.article.aggregate(
      ... [
      ... { $group: { _id: "$by_user", number: {$max: "$likes"}} }
      ... ]
      ... )
      { "_id" : "Curry", "number" : 350 }
      { "_id" : "Kuber", "number" : 750 }
      { "_id" : "Maxsu", "number" : 100 }
      >
       
       
      示例05:按name字段進行分組,獲取url字段中的第一行記錄
       
      > db.test.aggregate(
      ... [
      ... { $group: {_id: "$name", first_url: {$first: "$url"}} }
      ... ]
      ... )
      { "_id" : "tom", "first_url" : "www.d.org" }
      { "_id" : "jerry", "first_url" : "www.c.org" }
      { "_id" : "martin", "first_url" : "www.a.org" }
       
       
      示例06:按name字段進行分組,獲取url字段中最后一行記錄
       
      > db.test.aggregate(
      ... [
      ... { $group: {_id: "$name", last_url: {$last: "$url"}} }
      ... ]
      ... )
      { "_id" : "tom", "last_url" : "www.d.org" }
      { "_id" : "jerry", "last_url" : "www.c.org" }
      { "_id" : "martin", "last_url" : "www.b.org" }
      >
       
       
      示例07:按name字段進行分組,并將url字段的值以數組的方式顯示,重復項會多次顯示
       
      > db.test.aggregate(
      ... [
      ... { $group: {_id: "$name", new_url: {$push: "$url"}} }
      ... ]
      ... )
      { "_id" : "tom", "new_url" : [ "www.d.org" ] }
      { "_id" : "jerry", "new_url" : [ "www.c.org" ] }
      { "_id" : "martin", "new_url" : [ "www.a.org", "www.b.org", "www.a.org" ] }
      >
       
       
       
      示例08:按name字段進行分組,并將url字段的值以數組的方式顯示,重復項僅會顯示一次
       
      > db.test.aggregate(
      ... [
      ... { $group: {_id: "$name", new_url: {$addToSet: "$url"}} }
      ... ]
      ... )
      { "_id" : "tom", "new_url" : [ "www.d.org" ] }
      { "_id" : "jerry", "new_url" : [ "www.c.org" ] }
      { "_id" : "martin", "new_url" : [ "www.b.org", "www.a.org" ] }
      >
       
       
       
      更新文檔
       
      mongodb更新文檔可使用update()方法或者save()方法
       
      update()方法用于更新現有文檔中的值
       
      save()方法用于替換現有文檔
       
       
      > db.tb01.update({ title: "MongoDB Overview" },
      ... {$set: { title: "New Update MongoDB Overview" }})
      WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
      >
       
      update()方法一次只更新一個文檔,如需更新多個,則需要將參數multi設置為true
       
       
      > db.tb01.update(
      ... { url: "www.martin.com" },
      ... { $set: {url: "http://www.martin.com"} },
      ... { multi: true }
      ... )
      WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 3 })
      >
      >
       
       
      save()方法直接替換文檔
       
      > db.tb01.save(
      ... {
      ... _id: 100, title: "Updated by save() method", by: "martin"
      ... }
      ... )
      WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
       
       
      > db.tb01.save(
      ... {
      ... title: "MongoDB Guide", by: "jerry"
      ... }
      ... )
      WriteResult({ "nInserted" : 1 })
       
       
       
      刪除文檔
       
      語法:
       
      > db.collection_name.remove(conditon, justOne=true)
       
      justOne:表示只刪除一條數據
       
      示例01: 刪除作者為martin的文檔
       
      > db.tb01.remove({ by: "martin" })
      WriteResult({ "nRemoved" : 4 })
      >
      > db.tb01.find({ by: "martin" }).pretty()
      >
       
       
      示例02:僅刪除名稱為martin的一條數據
       
      > db.tb01.remove(
      ... { name: "martin" },
      ... { justOne: true}
      ... )
       
       
      示例03:刪除所有文檔
       
      > db.tb01.remove( {}, {justOne: false})
      WriteResult({ "nRemoved" : 2 })
       
      > db.tb01.find().pretty()
      >
       
       
       
       
       
       
       
       
       
       
       

      posted @ 2020-12-31 10:36  一只小白龍  閱讀(72)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产成人夜色高潮福利app| 国产99视频精品免费视频6| 人妻少妇偷人一区二区| 精品国产迷系列在线观看| 18禁黄网站禁片免费观看| 午夜综合网| 成熟熟女国产精品一区二区| 亚洲伊人久久综合成人| 日韩人妻一区中文字幕| 亚洲另类激情专区小说图片| 亚洲国产在一区二区三区| 灵丘县| 无码人妻一区二区三区AV| 亚洲一区在线观看青青蜜臀| 无码熟妇人妻av影音先锋| 精品亚洲综合一区二区三区| www久久只有这里有精品| 欧美激情肉欲高潮视频| 亚洲AV国产福利精品在现观看| 人人人澡人人肉久久精品| 农村肥熟女一区二区三区| 人人超碰人摸人爱| 人妻日韩人妻中文字幕| 人妻一本久道久久综合鬼色| 影视先锋av资源噜噜| 国产高清国产精品国产专区| 国产精品av中文字幕| 精品亚洲欧美高清不卡高清| 亚洲高清日韩heyzo| 欧美成人精品在线| 可以在线观看的亚洲视频| 徐州市| 精品中文字幕人妻一二| 青青草无码免费一二三区| 久久9精品区-无套内射无码| 北岛玲中文字幕人妻系列| 大屁股肥熟女流白浆| 国产精品一区 在线播放| 国产成人一区二区三区在线| 国产一区二区三区韩国| 国产成人综合色在线观看网站|