mongodb入門

關於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);
})

 

 

 

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