mongodb學習1(基礎知識)

一、安裝

我個人虛擬機下跑的而是centos6.5 64bit,因此我下載了tgz文件,鏈接https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.1.tgz

使用wget獲取該文件後,使用tar -zxvf進行解壓,將解壓完的目錄拷貝到/usr/local/mongodb下,同時將bin目錄下的可執行文件全部導入系統的path中去,命令如下 export PATH=/usr/local/momgodb/bin:$PATH

這樣就安裝完成了,其實不需要安裝,解壓就可以,呵呵。

二、啓動

切換到bin目錄下,輸入mongod即可啓動,會輸出一堆提示信息,我本機上面得到一個如下的警告信息(W)

Failed to obtain address information for hostname centos: Name or service not known


按住crtl+C斷開連接,使用mongod --repair進行修復,修復後輸入如下命令啓動


mongod --logpath=log/mongodb.log --fork

這樣mongodb就以後臺進程駐留了。


./bin/mongod --logpath=./log/mongodb.log --fork --rest

加上rest可以讓用用戶在瀏覽器中訪問,訪問端口是28017;而mongodb默認端口是27017


三、插入記錄試試

切換到bin目錄下,輸入./mongo即可操作數據庫,這就類似於輸入mysql進入數據庫管理界面一樣

db.runoob.insert({name:'zhangsan',age:20,sex:1})

db.runoob.find()


四、創建庫,新增記錄、修改記錄、刪除記錄、查找記錄

創建庫:use dingling

新增記錄:db.dingling.insert({name:'zhangsan',age:30,sex:1,job:'軟件工程師'})

db.dingling.insert({name:'lishi',age:30,sex:1,job:'前端工程師'})

修改記錄

db.dingling.update({name:'lishi'},{$set:{name:'zhangsan'}})

db.dingling.update({name:'zhangsan'},{$set:{name:'hehe'}},{multi:true})

刪除記錄

db.dingling.remove({name:'hehe'}) //刪除指定條件數據

db.dingling.remove({}) //刪除所有數據

查找記錄

db.dingling.find()

db.dingling.find().pretty() //以結構化展示

db.dingling.findOne() //只獲取1條

db.dingling.findOne({name:'hehe'})

db.dingling.find({age:{$lt:25}})

db.dingling.find({$or:[{name:'hehe'},{age:20}]}).pretty()

高級查找記錄

1、$type 匹配 具體type值可參看http://www.runoob.com/mongodb/mongodb-operators-type.html

db.dingling.find({name:{$type:2}}) //查找name是字符串類型的


2、limit 限制取條數

db.dingling.find({name:{$type:2}}).limit(2) //查找2條name是字符串類型的記錄


3、skip 跳過條數

db.dingling.find({name:{$type:2}}).skip(3).pretty() //查找name是字符串類型的記錄,跳過前3條


4、sort 排序  如果沒有指定sort()方法的排序方式,默認按照文檔的升序排列。

db.dingling.find().sort({name:1}) //查找所有記錄,按照名稱升序排列

db.dingling.find().sort({name:-1}) //查找所以記錄,按照名稱降序排列


5、ensureIndex 索引

db.dingling.ensureIndex({name:1,age:-1}) //創建一個以名稱升序,年齡降序的索引

db.dingling.ensureIndex({name:1},{background:true}) //創建一個以名稱升序的索引,在後臺運行

Parameter Type Description
background Boolean 建索引過程會阻塞其它數據庫操作,background可指定以後臺方式創建索引,即增加 "background" 可選參數。 "background" 默認值爲false
unique Boolean 建立的索引是否唯一。指定爲true創建唯一索引。默認值爲false.
name string 索引的名稱。如果未指定,MongoDB的通過連接索引的字段名和排序順序生成一個索引名稱。
dropDups Boolean 在建立唯一索引時是否刪除重複記錄,指定 true 創建唯一索引。默認值爲 false.
sparse Boolean 對文檔中不存在的字段數據不啓用索引;這個參數需要特別注意,如果設置爲true的話,在索引字段中不會查詢出不包含對應字段的文檔.。默認值爲 false.
expireAfterSeconds integer 指定一個以秒爲單位的數值,完成 TTL設定,設定集合的生存時間。
v index version 索引的版本號。默認的索引版本取決於mongod創建索引時運行的版本。
weights document 索引權重值,數值在 1 到 99,999 之間,表示該索引相對於其他索引字段的得分權重。
default_language string 對於文本索引,該參數決定了停用詞及詞幹和詞器的規則的列表。 默認爲英語
language_override string 對於文本索引,該參數指定了包含在文檔中的字段名,語言覆蓋默認的language,默認值爲 language.

6、aggregate 統計,類似於mysql中的count

db.dingling.aggregate([{$group:{_id:'$name',num:{$sum:1}}}]) //統計名稱相同的記錄

db.dingling.aggregate([{$group:{_id:'$age',num:{$sum:1}}}]) //統計年齡相同的記錄

表達式 描述 實例
$sum 計算總和。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
$avg 計算平均值 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
$min 獲取集合中所有文檔對應值得最小值。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
$max 獲取集合中所有文檔對應值得最大值。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
$push 在結果文檔中插入值到一個數組中。 db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
$addToSet 在結果文檔中插入值到一個數組中,但不創建副本。 db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
$first 根據資源文檔的排序獲取第一個文檔數據。 db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
$last 根據資源文檔的排序獲取最後一個文檔數據 db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])

7、管道 該功能是結合統計命令來處理

db.dingling.aggregate({$project:{name:1,age:1}}) 查找_id、name、age字段

db.dingling.aggregate({$project:{_id:0,name:1,age:1}}) 查找name、age字段

db.dingling.aggregate([{$match:{age:{$gt:10,$lte:30}}},{$project:{_id:0,name:1,age:1}}]) 查找年齡在10-30歲(含)之間的name和age字段

  • $project:修改輸入文檔的結構。可以用來重命名、增加或刪除域,也可以用於創建計算結果以及嵌套文檔。
  • $match:用於過濾數據,只輸出符合條件的文檔。$match使用MongoDB的標準查詢操作。
  • $limit:用來限制MongoDB聚合管道返回的文檔數。
  • $skip:在聚合管道中跳過指定數量的文檔,並返回餘下的文檔。
  • $unwind:將文檔中的某一個數組類型字段拆分成多條,每條包含數組中的一個值。
  • $group:將集合中的文檔分組,可用於統計結果。
  • $sort:將輸入文檔排序後輸出。
  • $geoNear:輸出接近某一地理位置的有序文檔。



發佈了79 篇原創文章 · 獲贊 10 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章