非結構化數據庫mongo操作入門
本文主要講解非結構化數據庫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 }
如果上面的操作你覺得還比較爽的話,下面的就沒有那種感覺了
查找一條記錄
> 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小時內刪除侵權內容。