???? 突然想去看下MongoDB的東西,于是有了這篇文章。其實很早以前就看過一些關于NoSql的文章,還記得當時里面有介紹MongoDB的,多瞅了2眼,并且在Window下安裝了MongoDB的驅動,小玩了會。今天重新翻出來,沒成想在命令行下竟然沒有能成功連接到MongoDB。一頓Baidu后發現了問題,原來是上次非正常退出MongoDB導致的問題,照貓畫虎,解決了問題:貼這里以備不時之需,
客戶端連接mongodb
在client的shell里,執行mongo.exe?
如何正常退出mongodb
在client的shell里,use admin,執行db.shutdownServer()即可!?
創建表
db.createCollection('zylTest')?
插入記錄
單條記錄:
db.zylTest.insert({"name":"zhoujy"})?
多條記錄
db.zylTest.insert([{"a":1,"b":2},{"a":2,"b":3},{"a":3,"b":4}])
插入記錄將按照Json結構來定義,若多條記錄的格式不相同,mongodb會自行做出處理
刪除記錄
單條刪除:db.zylTest.remove({"name":"zhoujy"})
全部刪除:db.zylTest.remove()?
更新記錄:
$【inc】用于int類型的列加減操作
這個部分比較麻煩:我們先來看【$inc】這個操作,【$inc】 用于int類型的key(列)加減操作,要是指定的要更新的key不存在,則會新增該key(列):以下面的操作為例:
如上圖所示在之前的結構中并不包含【pv】這一列,若第一次執行下面的操作,數據庫結構將發生響應的變化
db.zylTest.update({"name":"zhoujy"},{"$inc":{"pv":1}})
多次執行,列Pv的值將按輸入數值相加
相關命令行:
只更新第一條出現的記錄,+1
db. zylTest.update({"name":"a"},{"$inc":{"pv":1}})???
更新所有符合條件的記錄,+1;(第4個參數是true)
db. zylTest.update({"name":"a"},{"$inc":{"pv":1}},false,true)?
要是更新條件找不到記錄,默認是不執行;要是第3個參數是true,則會新增一條記錄,包含完整的數據結構
db. zylTest.update({"name":"a"},{"$inc":{"pv":1}},false,true)?
總之上面的查詢相當于SQL中的
update zylTest set pv=pv+1 where name =' zhoujy'
?
$【set】用于更新指定列
$set 用于更新指定key(列),要是指定的要更新的key不存在,則會新增該key(列):?
相關命令行:
只更新第一條出現的記錄
db. zylTest.update({"a":1},{"$set":{"b":"A"}})
更新所有符合條件的記錄(第4個參數是true),若沒有符合條件的記錄則不執行任何操作,當第三個參數為true的時候,若找不到符合條件的記錄則會新增一條記錄.
db. zylTest.update({"a ":-1},{"$set":{" b ":"A"}},false,true)?
update zylTest set b=’A’ where a ='1?
$【unset】 用于刪除指定的列?
刪除第一條b為2的記錄的列A
db.zylTest.update({"b":2},{"$unset":{"a":1}})
刪除復合條件的記錄的列A,第3個參數沒有意義
db.zylTest.update({"b":"2"},{"$unset":{"a":1}},true,true)
刪除所有記錄的列A
db.zylTest.update({},{"$unset":{"a":1}},false,true)??????
其余更新操作暫時省略?
查詢
返回所有記錄
db.zylTest.find()??
?
條件查詢
db.zylTest.find({"a":1})
db.zylTest.find({"a":1,"b":2})
?
In or not in
db.zylTest.find({"a":{"$in":[1,3,5,8]}})
db.zylTest.find({"a":{"$nin":[1,3,5,8]}})?
?
Or查詢
db.zylTest.find({"$or":[{"a":1},{"b":"2"}]})
db.zylTest.find({"$or":[{"a":{"$in":[1,2,3]}},{"b":"3"}]})?
?
不等條件查詢:
$lt(<);$lte(<=);$gt(>);$gte(>=);$ne(<>)
db.zylTest.find({"a":{"$gt":1,"$lte":5}})
db.zylTest.find({"a":{"$gt":1,"$lte":5,"$ne":3}})?
?
限制查詢:
db.zylTest.find({"a":{"$in":[1,3,5,8]}}).limit(1)
?
排序:
db.zylTest.find({"b":2}).sort({"a":-1})
?
匹配查詢:
這塊沒有看明白,后面再補充吧
?
??