(全網最詳細最有深度)超過1W字深度剖析JVM常量池
轉:https://www.cnblogs.com/whiteBear/p/12711806.html
建立資料庫
語法
MongoDB建立資料庫的語法格式如下:
use DATABASE_NAME
如果資料庫不存在,則建立資料庫,負責切換到指定資料庫
例子:
發現我們建立的資料庫data並不在資料庫列表中,要顯示它,就必須要往data資料庫中插入資料。
這裡要說明下,MongoDB中預設資料庫為test,如果沒有建立資料庫,直接將資料(集合)放入未建立的資料庫中,這時,MongoDB是將該集合存放在了test資料庫中,而並沒有建立該資料庫,再把集合放進去(這麼複雜,它好像還做不來_
上例,我想往資料庫中存入集合,但我忘記建立該資料庫,這條語句將會將集合a存入到test資料庫
刪除資料庫
語法
MongoDB刪除資料庫的語法格式為:
db.dropDatabase()
刪除當前資料庫,預設為test,可使用db命令檢視當前資料庫名。
例子:
以刪除剛才我們建立的data資料庫為例
可通過show dbs命令檢視資料庫是否刪除成功
刪除集合
語法格式:
db.collection.drop()
例子中插入兩個集合a,b,使用該命令將集合a刪除
在刪除資料庫與集合操作中,當將集合刪除完之後,使用show dbs檢視資料庫時,發現當前資料庫已經沒有了,給我種感覺,資料庫因集合存在而存在,也因集合消失而消失,但集合卻未因資料庫存在而存在,即使沒有資料庫,它還可以棲息於test資料庫中
插入文件
文件的資料結構和JSON基本一樣。所有儲存在集合中的資料都是BSON格式。
BSON是一種類json的一種二進位制形式的儲存格式,簡稱Binary JSON
MongoDB使用insert()或save()方法向集合中插入文件,語法如下:
db.COLLECTION_NAME.insert(document)
例子:
以下文件可以儲存在data資料庫的data1集合中
data1集合,如果不在該資料庫中,MongoDB會自動建立該集合並插入文件
db.data1.find()檢視data1集合中資料(文件)
也可以將資料定義為一個變數,然後插入集合
執行插入操作並檢視
db.data1.save(document)使用方法與insert類似。如果不指定_id欄位save()方法類似於insert()方法。如果指定_id欄位,則會更新_id欄位 **更新文件** MongoDB使用update()函式更新
db.collection.update(criteria,objNew,upsert,multi)
update()函式接受一下四個引數:
- criteria:update的查詢條件,類似SQL update查詢內where後面的
- objNew:update的物件和一些更新的操作符(如,,inc...)等,也可以理解為sql update查詢內set後面的
- upsert:如果不存在update的記錄,是否插入objNew,true為插入,預設為false,不插入
- multi:MongoDB預設是false,只更新找到的第一條記錄,如果這個引數為true,就把按條件查出來的多條記錄全部更新
向data資料庫中插入名為“userDetails”的集合,以下是要插入的資料:
document=({"user_id" : "MNOPBWN","password" :"MNOPBWN" ,"date_of_join" : "16/10/2010"
,"education" :"M.C.A." , "profession" : "CONSULTANT","interest" : "MUSIC","community_name" :["MODERN MUSIC",
"CLASSICAL MUSIC","WESTERN MUSIC"],"community_moder_id" : ["MR. BBB","MR. JJJ","MR MMM"],"community_members" :
[500,200,1500],"friends_id" : ["MMM123","NNN123","OOO123"],"ban_friends_id" :["BAN123","BAN456","BAN789"]});
document=({"user_id" : "QRSTBWN","password" :"QRSTBWN" ,"date_of_join" : "17/10/2010" ,"education" :"M.B.A."
, "profession" : "MARKETING","interest" : "MUSIC","community_name" :["MODERN MUSIC", "CLASSICAL MUSIC","WESTERN
MUSIC"],"community_moder_id" : ["MR. BBB","MR. JJJ","MR MMM"],"community_members" : [500,200,1500],"friends_id" :
["MMM123","NNN123","OOO123"],"ban_friends_id" :["BAN123","BAN456","BAN789"]});
使用update()命令更新資料
目標:將"userdetails"集合中"user_id"為"QRSTBWN"的"password"欄位修改為"NEWPASSWORD"。(如果criteria引數匹配集合中的任何一條資料,它將會執行替換命令,否則會插入一條新的資料。)
檢視更新後的資料:
若想值修改某個欄位,而不希望將整個文件中的資料重寫一遍,可採用下面的方法:
只更新一條記錄:
全部更新:
只新增一條:
全部新增進去:
$inc 欄位值加1
刪除文件
MongoDB remove()函式用來移除集合中的資料
MongoDB資料更新可以使用update()函式。在執行remove()函式前先執行find()命令來判斷執行的條件是否正確,這是一個比較好的習慣。
remove()方法的基本語法格式如下:
db.collection.remove(
<query>,
<justOne>
)
引數說明:
- query:(可選)刪除的文件的條件
- justOne:(可選)為true或1,則只刪除一個文件
- writeConcern:(可選)丟擲異常的級別
可看到刪除了三條資料
如果想只刪除一條找到的記錄,可將justOne設定為1,如下:
db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
若想刪除所有資料,可採用以下方式:
查詢文件
語法
MongoDB查詢資料的語法格式如下:
db.COLLECTION_NAME.find()
find() 方法以非結構化的方式來顯示所有文件。
如果你需要以易讀的方式來讀取資料,可以使用 pretty() 方法,語法格式如下:
db.col.find().pretty()
pretty() 方法以格式化的方式來顯示所有文件。
例子:
以上面用到的userdetail集合為例:
除了 find() 方法之外,還有一個 findOne() 方法,它只返回一個文件。
MongoDB 與 RDBMS Where 語句比較
MongoDB AND 條件
MongoDB 的 find() 方法可以傳入多個鍵(key),每個鍵(key)以逗號隔開,及常規 SQL 的 AND 條件。
語法格式如下:
db.col.find({key1:value1, key2:value2}).pretty()
例子:
相當於where語句: where name = "" AND education=""
MongoDB OR條件
MongoDB OR 條件語句使用了關鍵字$or,語法格式如下:
db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
AND 和 OR 聯合使用