非結構化數據庫mongo操作入門

      網友投稿 667 2022-05-30

      本文主要講解非結構化數據庫mongo的操作,與之相對的是結構化數據庫的SQL操作。

      首先登錄數據庫(假設我們已經建好了數據庫)

      mongo -u user -p password admin show dbs use dbname

      到這里,和結構化數據庫都很相似,比如MYSQL,但后面的就開始完全不一樣了,從數據庫之下,就開始不一樣。

      結構化數據庫里的存儲對象叫表(table),但非結構化數據庫里的存儲對象叫集合(collection)。叫慣了的表,要改口叫集合了,會有些不習慣,但為了形成正確的概念,這個習慣要憋過來,叫集合。

      標準的SQL語法是結構化數據庫的操作語言,SQL中,先不說DDL數據定義語言,先說說DML數據操作語言,

      SQL里的DML,以檢索數據舉例來說,是使用select開頭的子句,select ...表示要獲取哪些內容,然后接 from ...子句,表示從那個表里檢索,再接where ...子句,表示檢索條件。也就是說SQL這種語言它自己的結構化的組織也非常好,就是一個固定的框子,往里面填對應的內容就可以了。

      但是mongo就不一樣了。你得換一種看法,不然哪哪都不順眼,也不順手。

      換一種什么樣的看法會比較順眼呢?如果你學過編程,那就看做是對象在引用屬性或是在調用方法,而且是鏈式調用。這下就順眼多了!

      舉例來說,我們要查看一個集合里的記錄(準確的說,在非結構化數據庫里叫文檔document,不叫記錄,這里混用不做區分),dbname.collectionname.findOne()

      db里面有集合屬性,集合里面有記錄,調用集合的findOne()方法,美美的打印一條記錄的內容出來

      這樣是不是好理解多了~

      下面我們體驗一下基本的操作,包含有建集合、查詢/條件查詢、條件更新、刪除等。

      首先是建集合,結構化數據庫的建表,那必須定義表的結構。但是非結構化數據庫,哈哈哈,那就是隨意!

      給個表名就可以,以后想往表里放東西,隨意,沒有任何字段上的結構定義的約束。

      > db.createCollection('ic') { "ok" : 1 }

      然后我們插入4條記錄,準備點數據

      > db.ic.insert({'name':'superman','money':0}) WriteResult({ "nInserted" : 1 }) > db.ic.insert({'name':'admin','money':0}) WriteResult({ "nInserted" : 1 }) > db.ic.insert({'name':'u1','money':0}) WriteResult({ "nInserted" : 1 }) > db.ic.insert({'name':'u2','money':0}) WriteResult({ "nInserted" : 1 })

      看一下記錄,看所有,和看一條(格式化顯示)

      > db.ic.find() { "_id" : ObjectId("5fec456389372f26d3398cb5"), "name" : "superman", "money" : 0 } { "_id" : ObjectId("5fec457189372f26d3398cb6"), "name" : "admin", "money" : 0 } { "_id" : ObjectId("5fec457789372f26d3398cb7"), "name" : "u1", "money" : 0 } { "_id" : ObjectId("5fec457c89372f26d3398cb8"), "name" : "u2", "money" : 0 } > db.ic.findOne() { ? ? "_id" : ObjectId("5fec456389372f26d3398cb5"), ? ? "name" : "superman", ? ? "money" : 0 }

      如果上面的操作你覺得還比較爽的話,下面的就沒有那種感覺了

      非結構化數據庫mongo操作入門

      查找一條記錄

      > db.ic.find({'name':'u1'}) { "_id" : ObjectId("5fec457789372f26d3398cb7"), "name" : "u1", "money" : 0 }

      更新,將name為superman和admin的除外,其他人的money都給到10000。你看看吧,這個寫法是人寫的,人看的嗎?看看這個and條件判斷,簡直不要太難看

      > db.ic.update({$and:[{'name':{$ne:'superman'}},{'name':{$ne:'admin'}}]},{$set:{"money":10000}},true,true) WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 }) > db.ic.find() { "_id" : ObjectId("5fec456389372f26d3398cb5"), "name" : "superman", "money" : 0 } { "_id" : ObjectId("5fec457189372f26d3398cb6"), "name" : "admin", "money" : 0 } { "_id" : ObjectId("5fec457789372f26d3398cb7"), "name" : "u1", "money" : 10000 } { "_id" : ObjectId("5fec457c89372f26d3398cb8"), "name" : "u2", "money" : 10000 }

      數據庫 云數據庫 GaussDB(for Mongo)

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:深度神經網絡在文本匹配中的應用
      下一篇:《Spark數據分析:基于Python語言 》 —2.5 在Windows上安裝Spark
      相關文章
      亚洲伊人tv综合网色| 国产V亚洲V天堂A无码| 亚洲激情视频网站| 亚洲高清无在码在线无弹窗| 久久精品亚洲综合| 亚洲Aⅴ无码专区在线观看q| 久久亚洲精品中文字幕三区| 亚洲桃色AV无码| 日本红怡院亚洲红怡院最新| 亚洲Av无码乱码在线播放| 亚洲av无一区二区三区| 久久久久亚洲AV无码去区首| 国产亚洲精品免费| 亚洲人成色77777在线观看大 | www国产亚洲精品久久久日本| 久久精品国产亚洲AV电影网| 色天使亚洲综合一区二区| 免费亚洲视频在线观看| 亚洲午夜激情视频| 亚洲人成图片小说网站| 亚洲国产香蕉碰碰人人| 亚洲精品免费在线| 亚洲欧洲日韩极速播放| 亚洲精品无码人妻无码| xvideos亚洲永久网址| 伊人久久大香线蕉亚洲五月天 | 精品亚洲一区二区三区在线观看| 中文字幕精品亚洲无线码一区 | 亚洲国产无线乱码在线观看| 无码欧精品亚洲日韩一区夜夜嗨 | 亚洲国产成人va在线观看网址| 激情亚洲一区国产精品| 亚洲精品国产精品| 亚洲日本中文字幕天堂网| 亚洲精品色午夜无码专区日韩| 色拍自拍亚洲综合图区| 456亚洲人成在线播放网站| 亚洲av成人一区二区三区在线播放| 亚洲国产午夜中文字幕精品黄网站| 亚洲综合AV在线在线播放| 内射干少妇亚洲69XXX|