關於mongodb的好處,優點之類的這裏就不說了,唯一要講的一點就是mongodb中有三元素:數據庫,集合,文檔,其中“集合”就是對應關係數據庫中的“表”,“文檔”對應“行”。
準備工作:下載安裝mongodb
1、啓動mongodb
# mongodb數據存儲路徑不能有空格
mongod --dbpath=D:/mongodb
# mongodb默認使用27017端口
2、基本操作
#登錄
cd $mongodb/bin mongo
1> insert
db.person.insert({"name":"jack","age":25}) db.person.insert({"name":"tom","age":20}) db.person.insert({"name":"jason","age":21}) var rose={"name":"rose","sex":1,"age":18} db.person.insert(rose)
2> find
# 查詢所有
db.person.find()
# "_id": 這個字段是數據庫默認給我們加的GUID,目的就是保證數據的唯一性。
# 查詢jack用戶信息
db.person.find({"name":"jack"})
# 日常開發中,常見查詢的操作
① 範圍查詢:>, >=, <, <=, !=, = 在mongodb中分別對應$gt, $gte, $lt, $lte, $ne
#查詢年齡小於等於20歲的用戶
db.person.find({"age":{$lte:20}})
② 邏輯關聯:OR,In,not in 在mongodb中分別對應$or, $in, $nin
# 查詢用戶名包含jack 和rose的用戶
db.person.find({"name":{$in:["jack", "rose"]}})
# 查詢用戶名爲jack 年齡爲25歲的用戶
db.person.find({"name":"jack","age":20})
# 查詢用戶名以j開頭的用戶信息
db.person.find({"name":/^j/})
# 查詢用戶名以e結尾的用戶信息
db.person.find({"name":/e$/})
# where查詢
db.person.find({$where:function(){return this.name=="jack"}})
3> update
# update方法的第一個參數爲“查找的條件”,第二個參數爲“更新的值”
db.person.update({"name":"tom"},{"name":"joe","age":19})
#局部修改器$inc 和 $set
#$inc修改器
db.person.update({"name":"jack"},{$inc:{"age":30}})
#$set修改器
db.person.update({"name":"jack"},{$set:{"age":20}})
4> remove
# 刪除jack用戶信息
db.person.remove({"name":"jack"})
3、聚合
1> count
# 統計用戶數
db.person.count()
# 統計年齡在20歲的用戶數
db.person.count({"age":20})
2> distinct
#查詢年齡段
db.person.distinct("age")
3> group
#按照age進行分組
db.person.group({"key":{"age":true},"initial":{"person_name":[]},"$reduce":function(cur,prev){prev.person_name.push(cur.name);}})
4> mapReduce
mapReduce其實是一種編程模型,用在分佈式計算中,其中有一個“map”函數,一個”reduce“函數。
① map:這個稱爲映射函數,裏面會調用emit(key,value),集合會按照你指定的key進行映射分組。 ②reduce:這個稱爲簡化函數,會對map分組後的數據進行分組簡化,注意:在reduce(key,value)中的key就是emit中的key,vlaues爲emit分組後的emit(value)的集合。
db.orders.insert({"cust_id":"A123","amount":500,"status":"A"}) db.orders.insert({"cust_id":"A123","amount":250,"status":"A"}) db.orders.insert({"cust_id":"B212","amount":200,"status":"A"}) db.orders.insert({"cust_id":"A123","amount":300,"status":"D"}) db.orders.mapReduce( function(){emit(this.cust_id,this.amount);},//map function(key, values){return Array.sum(values)},//reduce { query:{status:"A"}, out:"order_totals" } ) db.order_totals.find()
參考:http://www.cnblogs.com/loogn/archive/2012/02/09/2344054.html
4、遊標
var list = db.person.find(); list.forEach(function(x){ print(x.name); })