基本概念: 1、
文件 --> 對應關聯式資料庫的行,也就是一條記錄。它比關聯式資料庫的行的功能要強大,更像是是某個具體的物件。文件以一種map的形式展現出來,當然value可以是任意的型別,也可以繼續是乙個文件(遞迴的定義) 2、
集合 --> 對應關聯式資料庫的表。但是它又是無模式的,即文件不要求一致。
基本操作: 1、
顯示資料庫
show dbs
2、建立資料庫:
use yourdatebasename 這就建立了乙個資料庫。
不過你用show dbs,並不能顯示yourdatabasename,因為這個資料庫沒有任何操作。所以如果你直接離開,則本資料庫會被廢除。
如果你插入一條記錄,此時就可以通過show dbs看到對應的資料庫
如下:record =
db.yourdatebasename.yourtablename.insert(record)
這時使用show dbs就可以看到你的資料庫了 3、
顯示資料庫
show collections。預設的包含system.indexes 表 4、
建立集合:
因為mongodb中集合是無模式的,不像傳統的關係型資料庫是需要預先申明表包含哪些字段並且定義欄位的屬性。雖有無需預先定義。使用的時候直接插入。可以見上面的例子。 5、
刪除集合
db.yourdatabasename.yourcollectionname.drop() 6、
將文件插入集合
record =
db.yourdatabasename.yourcollectionname.insert(record) 7、
刪除集合中的文件
db.yourdatabasename,yourcollectionname.remove()
會清空此集合中的所有文件 8、
文件更新
mongo中的更新有兩種
一種是:用新的文件去替換舊的文件。【就是通過條件先將滿足條件的選出來該文件,修改完之後替換舊的文件】,個人不喜歡這種操作,違背了原子性啊。
另外一種:採用mongo的修改器對文件進行修改。
修改器列表:
8.1、「$set」修改器:用了指定乙個健的值。如果健不存在,就建立它。
example:
db.mymongodb.user.update(, })
「$unset」刪除某個健
example:
db.mymongodb.user.update(, })
8.2、「$inc」修改器用了增加已有的健的值,或者在鍵不存在的時候建立乙個健。
example:
db.mymongodb.user.update(,
})
tips: $inc 只能用於整數,長整數和雙精度浮點數。其他數會導致失敗。
8.3、「$push」會向已有的陣列末尾加入乙個元素,要是沒有就會建立乙個新的陣列。
example:
db.mymongodb.user.update(, })
8.4、「$ne」not equal判定器,【判定給定的屬性不等於給定值】
example:
db.mymongodb.user.update(, })
8.5、「$addtoset」在不重複的情況下新增
example:
db.mymongodb.user.update(, })
8.6、「$each」陣列遍歷修改器
example:
db.mymongodb.user.update(,
}})8.7、「$pop」修改器,從陣列中刪除任何一端刪除元素
example:
}從陣列末尾刪除乙個元素
}從陣列頭部刪除
8.8、陣列定位修改器
example:
db.mymongodb.user.update(, })
9、特殊的更新or插入 upsert
upsert的特點是如果存在就更新,如果不存在就根據update的條件插入一條新的記錄
10、批量更新
需要設定update的第四個引數為true,否則預設更新第乙個匹配的文件
11、得到上一條命令的執行結果
mongodb的查詢操作
1、查詢全部集合
db.mymongodb.post.find()
如果是console的話,預設顯示20條記錄
2、返回指定的鍵
db.mymongodb.post.find({}, )
返回鍵foo和健baz,同時預設返回_id鍵的值
3、指定不返回的鍵
db.mymongodb.post.find({}, )
返回除foo之外的其他鍵
4、判定條件查詢
a) 「$lt」 小於
b) 「$lte」小於等於
c) 「$gt」大於
d) 「$gte」大於等於
e) 「$ne」不等於
db.mymongodb.user.find(})
5、其他條件查詢
a) 「$in」 :是否在某乙個集合的查詢
db.mymongodb.user.find(})
b) 「$nin」:與in相對應,不處於某個結合的文件
c) 「$or」:多條件查詢
db.mymongodb.user.find(, ]})
d) 「$not」非的情況下使用。其他條件可以基於它
e) 「$mod」取模查詢
f) 「$null」可以匹配值為null的字段,同時也能匹配鍵不存在的文件
如果同時要判定鍵存在,需要加上"$exists" 判定
6、查詢陣列
a) 「$all」 通過多個元素匹配陣列
b) 陣列下標匹配
db.mymongodb.food.find()
c) "$size"陣列長度匹配
db.mymongodb.food.find("fruit" : )
7、"$slice"指定返回集合的個數
db.mymongodb.posts.find(criteria, )
n = 10 返回前10條記錄
n = -10 返回後10條記錄
n = [23, 10] 返回從23條記錄開始的10條記錄,感覺應該可以做分頁
8、採用點表示法查詢內嵌文件(推薦)
db.mymongodb.find()
9、採用分層的方式查詢
db.mymongodb.find(})
10、$where查詢
$where查詢非常強大,它可以新增js的函式實現高階的查詢功能。
基本樣式如下:
db.mymongodb.find(})
如果function返回true,該記錄就返回。否則就不返回。
Mongodb的學習筆記
mongodb是乙個高效能,開源,無模式的文件型資料庫,是當前nosql資料庫中比較熱門的一種。它在許多場景下可用於替代傳統的關係型資料庫或鍵 值儲存方式。mongo使用c 開發。mongo的官方 位址是 讀者可以在此獲得更詳細的資訊。小插曲 什麼是nosql?nosql,全稱是 not only ...
mongoDB的學習筆記
最近在學習mogodb,目前只是出於學習階段,還沒有在專案中實戰過,記錄一下下學習的總結。start 基本概念 1 文件 對應關聯式資料庫的行,也就是一條記錄。它比關聯式資料庫的行的功能要強大,更像是是某個具體的物件。文件以一種map的形式展現出來,當然value可以是任意的型別,也可以繼續是乙個文...
MongoDB學習筆記
從接觸計算機學習開始,我所使用的資料庫就是mysql,oracle這樣的關係型資料庫。早就聽說了nosql的概念,也對其有代表性的非關係型資料庫mongodb有所耳聞,一直想學習學習這項從未使用過的技術,可是由於種種原因,又沒有時間來學習學習這項新的概念。也就是這麼巧,目前的工作中,使用到的就是mo...