> use deng switched to db deng > db.createCollection("jingdong") #無參數 {"ok":1} > show collections jingdong system.indexes > userdoc1=({"user_id":1,"name":"cloud","state":"active","actor":"user","e-mail":"[email protected]","VM_num":2,"time":[{"date":"2014-08-12","hour":"10:53 PM"}] }) > userdoc2=({"user_id":2,"name":"testadmin","state":"active","actor":"admin","e-mail":"[email protected]","VM_num":2,"time":[{"date":"2014-08-11","hour":"06:34 AM"}] }) > doc=({"name":"peter","position":"teacher"}) > db.jingdong.insert(userdoc1) WriteResult({"nInserted":1}) > db.jingdong.insert(userdoc2) WriteResult({"nInserted":1}) > db.jingdong.insert(doc1) WriteResult({"nInserted":1})
db.jingdong.find() #相當於select * from jingdong;條件操作符
mongodb中的條件操作符有: (>) 大於 - \$gt #greate (<) 小於 - \$lt #low (>=) 大於等於 - \$gte #equal (<= ) 小於等於 - \$lte
例子:
> db.jingdong.find({user_id:{$gt:1}}) > db.jingdong.find({user_id:{$lte:2,$gt:1}})
#type的值
雙精度型-1 字符串-2 對象-3 數組-4 二進制數據-5 對象ID-7 布爾類型-8 數據-9 空-10 正則表達式-11 JS代碼-13 符號-14 有作用域的JS代碼-15 32位整型數-16 時間戳-17 64位整型數-18 Min key-255 Max key-127
db.jingdong.find({"name":{$type:2}}) #查找name是字符串的文檔記錄
limit和skip
讀取指定數量的數據記錄 -limit db.shiyanlou.find().limit(1) #讀取一條記錄,默認是排在最前面的那一條被讀取 讀取時跳過指定數量的數據記錄 -skip db.shiyanlou.find().limit(1).skip(1)
與sqlite中的排序一樣有升序和降序,其中升序用1表示,降序用-1表示 db.jingdong.find().sort({"time":1})
索引通常能夠極大的提高查詢的效率,如果沒有索引,MongoDB在讀取數據時必須掃描集合中的每個文件並選取那些符合查詢條件的記錄。這種掃描全集合的查詢效率是非常低的,特別在處理大量的數據時,查詢可以要花費幾十秒甚至幾分鐘,無疑對網站的性能是非常致命的。索引是特殊的數據結構,索引存儲在一個易於遍歷讀取的數據集合中,索引是對數據庫集合中一個文檔或多個文檔的值進行排序的一種結構。
db.COLLECTION_NAME.ensureIndex({KEY:1|-1})
> db.shiyanlou.ensureIndex({"name":1}) #1代表升序 -1代表降序
> db.shiyanlou.ensureIndex({"user_id":1,"name":1},{background:1})ensureIndex參數表格如下:
db.COLLECTION_NAME.aggregate({ $match:{x:1}, {limit:NUM}, $group:{_id:$age} })
$match:查詢,跟find一樣; $limit:限制顯示結果數量; $skip:忽略結果數量; $sort:排序; $group:按照給定表達式組合結果。
> db.jingdong.aggregate([{$group:{_id:"$name", user:{$sum:"$user_id"}}}])
$project:修改輸入文檔的結構。可以用來重命名、增加或刪除域,也可以用於創建計算結果以及嵌套文檔。 $match:用於過濾數據,只輸出符合條件的文檔。$match使用MongoDB的標准查詢操作。 $limit:用來限制MongoDB聚合管道返回的文檔數。 $skip:在聚合管道中跳過指定數量的文檔,並返回余下的文檔。 $unwind:將文檔中的某一個數組類型字段拆分成多條,每條包含數組中的一個值。 $group:將集合中的文檔分組,可用於統計結果。 $sort:將輸入文檔排序後輸出。 $geoNear:輸出接近某一地理位置的有序文檔。
> db.shiyanlou.aggregate([{$match:{user_id:{$gt:0,$lte:2}}},{$group:{_id:"user",count:{$sum:1}}}]) {"_id":"user","count":2}