mongodb學習總結(一)- 增刪改查

在一年前曾經接觸使用過mongo,現在重新拾起,做一些總結記錄。
mongodb是非關係型數據庫裏比較熱門的一種,具體介紹和優劣對比就先不做記錄了,這裏主要簡單記錄用法。初學者可以參考 菜鳥教程-mongodb,我只是整理記錄,並不如教程的全面,只是個人用的學習筆記。
mongodb的集合 類似於 關係型數據庫的表,集合的列 類似於 表的行。數據是形如JSON串的結構存儲在db的集合中的,是mongodb獨有的結構bson。

以下命令使用在mongodb的命令行交互中:

show dbs (顯示所有db名)
在這裏插入圖片描述
use dbName (進入某db,如果沒有則會新建)
在這裏插入圖片描述
show tables (顯示db中所有集合名)
在這裏插入圖片描述
db.createCollection(colName) (增加一個集合,參數是集合名)
在這裏插入圖片描述
db.col.insert( { key : value, …} ) (往集合內插入一條數據,db.集合名.insert( data ))
在這裏插入圖片描述

db.dropDatabase() (刪除數據庫,在use 數據庫名 之後輸入調用)
在這裏插入圖片描述
db.collection.drop() (刪除集合,db.集合名.drop() )
db.collection.remove( , { justOne: , writeConcern: } ) (刪除數據/文檔)
在這裏插入圖片描述

db.collection.update(
,
,
{
upsert: ,
multi: ,
writeConcern:
}
)
在這裏插入圖片描述

db.collection.find(query, projection) (query查詢條件,projection使用投影操作符指定返回的鍵。查詢時返回文檔中所有鍵值, 只需省略該參數即可(默認省略))
如果沒有參數,默認返回集合中所有數據。findOne()只顯示一條,如果存在多條數據默認第一條。
perrty() (易讀顯示)
在這裏插入圖片描述

  • 條件使用總結

刪/改/查 都涉及到條件,條件參數是可選,無條件默認選擇的全部。

操作符 含義 用法
$gt 大於( > ) db.col.find({key: { $gt : value} })
$lt 小於( < ) db.col.find({key: { $lt : value} })
$gte 大於等於( >= ) db.col.find({ key: {$gte : value} })
$lte 小於等於( <= ) db.col.find({ key: {$lte : value} })
$ne 不等於 db.col.find({ key: { $ne: value} })
$eq 等於 db.col.find({ key: value }) 或者 db.col.find({ key: { $eq: value} }) 不僅限於value爲數字
$type 匹配類型 匹配類型

模糊查詢(字符串):
包含value的 db.col.find({ key : /value/ })
value開頭的 db.col.find({ key : /^value/ })
value結尾的 db.col.find({ key : /value$/ })

例如:
假如有這麼三條數據

{
	"name" : "root",
	"value" : 2,
	"tags" : [
		"root",
		"admin",	
	],
	"days" : [ 15, 20, 25 ],
	"info" : {
		"age" : 24,
		"account" : "rootmanager",
	}
},
{
	"name" : "test",
	"value" : 3,
	"tags" : [
		"admin",	
	],
	"days" : [ 15.1, 11, 12 ],
	"info" : {
		"age" : 23,
		"account" : "testAccount",
		"desc" : "this is a test",
	}
},
{
	"name" : "manager",
	"value" : 1,
	"tags" : [
		"root",
	],
	"days" : [ 25, 20, 21 ],
	"info" : {
		"age" : 24,
	}
}

查詢 value < 2 的數據 : db.集合名.find({ “value” : {$lt:2} })

查詢 value < 2 且 value > 0 的數據 : db.集合名.find({ “value” : {$lt:2, $gt:0} })

查詢 value == 2 或 value == 3 的數據 : db.集合名.find({ $or : [ {“value” : 2}, {“value” : 3} ] })

數組查詢:

查詢 “tags 包含 ‘root’ ” 的數據 : db.集合名.find({ “tags” : “root” })
查詢 “tags 包含指定內容且順序與參數順序一致” 的數據 : db.集合名.find({ “tags” : [“root”, “admin”] })
查詢 “tags 包含指定內容且忽略其他內容以及順序” 的數據 : db.集合名.find({ “tags” : { $all: [“root”, “admin”] } })
查詢 “tags 大小等於2” 的數據 : db.集合名.find({ “tags” : { $size : 2} })

查詢 “days 中第一個元素 大於($gt) 22和小於($lt) 30“ 的數據:db.集合名.find({ “days.1” : {$gt:22, $lt:30} })
查詢 “days 裏含有大於($gt) 22和小於($lt) 30” 的數據:db.集合名.find({ “days” : {$gt:22, $lt:30} })
查詢 “days 至少包含一個大於($gt) 22和小於($lt) 30” 的元素 的數據:db.集合名.find({ “days” : {$elemMatch: {$gt:22, $lt:30}} })

Map查詢:

map和array查詢有些類似,不過map中的元素可能是混合型的。
查詢 info裏 age 等於24 的數據:db.集合名.find({ “info.age”: 24}) 或者 db.集合名.find({ “info” : {“age”:24} })
剩下的查詢可以舉一反三的去試試看,我暫時沒試到,所以只寫到這裏,以後有用到的會繼續補充。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章