主要介紹下mongodb的基本語法,增刪改查等
我們都熟悉mysql和oracle的基本操作,這裏介紹mongodb的基本語法
首先要比較下mysql和mongodb的差別
mysql和oracle都有實例的概念,即數據庫實例。而mongodb同樣有實例的概念,只是初始化默認提供test數據庫
mongodb基本語法實戰
mongodb的客戶端是一個js編譯器,所以支持js語法,默認連接的是test數據庫
1.insert操作
>db.test.insert({"name":"jack","age":20})
>db.test.insert({"name":"tom","age":23})
>db.test.insert({"name":"tom","age":null})
2.find操作
注意:_id自動是數據庫默認的guid,保證數據的唯一性;安裝bson的相識書寫文檔,不符合語法會提示錯誤
>db.test.find()
>db.test.find({"name":"tom"})
(1)一個查詢document裏可以包含多個條件,默認多條件之間是and關係
>db.test.find({"name":"tom","age":23})
(2)有時候我們並不需要查詢的所有內容,可以指定查詢返回的內容
比如我們只需要name的信息,可以執行
>db.test.find({},{"name":1})
如果不想顯示_id鍵,那麼可以執行
>db.test.find({},{"name":1,"_id":0})
(3)查詢條件
<1>$lt,$lte,$gt,$gte分別對應<,<=,>,>=
比如查詢age在18-22之間的用戶
>db.test.find({"age":{"$gte":18,"$lte":22}})
<2>or查詢
比如查詢年齡是20或24的數據,可以執行
>db.test.find({"age":{"$in":[20,24]}})
與in相反的是nin,如下
>db.test.find({"age":{"$nin":[20,24]}})
如果是多個條件的or查詢,譬如查詢年齡在20或24的,或名字都叫做tom的數據
>db.test.find({"$or":[{"age":{"$in":[20,24]}},{"name":"tom"}]})
<3>$not使用,在前邊操作的基礎上相反
>db.test.find({"age":{"$in":[20,24]}})
>db.test.find({"age":{"$not":{"$in":[20,24]}}})
(4)特殊類型查詢
查詢null,null同時匹配自身和不存在的key
>db.test.find({"age":null})
>db.test.find({"age1":null})
(5)正則表達式
>db.test.find({"name":/tom/i})
mongodb是使用perl來匹配正則表達式,所以pcre允許的語法都可以在mongodb中使用
(6)查詢數組
>db.food.insert({"fruit":["apple", "banana", "peach"]})
查找水果裏有香蕉的ducoment
>db.food.find({"fruit":"banana"})
查詢既有apple又有banana的document
(7)查詢嵌入document
>db.test.insert({"name":{"first":"Joe","last":"Schmoe"},"age":45})
>db.test.find({"name.first":"Joe","name.last":"Schmoe"})
(8)where查詢
假如有個list,想查詢key的值裏有相等的document
>db.foo.insert({"apple":1,"banana":6,"peach":3})
>db.foo.insert({"apple":1,"spinach":4,"watermelon":4})
第二個document裏,菠菜和西瓜等值,這個應該查詢到
>db.foo.find({"$where":function() {
for (var current in this) {
for (var other in this) {
if (current != other && this [current] == this [other])
return true;
}
}
}
return false;
}})
(9)遊標
3.update操作
注意:update方法的第一個參數是查找的條件,第二個參數是更新的值
>db.test.update({"name":"tom"},{"name":"tom","age":35})
4.remove操作
>db.test.remove({"name":"tom"})