1. 基本查詢:
構造查詢資料。
> db.test.findone()
--多條件查詢。下面的示例等同於sql語句的where name = "stephen" and age = 35
> db.test.find()
--返回指定的文件鍵值對。下面的示例將只是返回name和age鍵值對。
> db.test.find({}, )
--指定不返回的文件鍵值對。下面的示例將返回除name之外的所有鍵值對。
> db.test.find({}, )
2. 查詢條件:
mongodb提供了一組比較操作符:$lt/$lte/$gt/$gte/$ne,依次等價於/>=/!=。
--下面的示例返回符合條件age >= 18 && age <= 40的文件。
> db.test.find(})
--下面的示例返回條件符合name != "stephen1"
> db.test.find(})
--$in等同於sql中的in,下面的示例等同於sql中的in ("stephen","stephen1")
> db.test.find(})
--和sql不同的是,mongodb的in list中的資料可以是不同型別。這種情況可用於不同型別的別名場景。
> db.test.find(})
--$nin等同於sql中的not in,同時也是$in的取反。如:
> db.test.find(})
--$or等同於sql中的or,$or所針對的條件被放到乙個陣列中,每個陣列元素表示or的乙個條件。
--下面的示例等同於name = "stephen1" or age = 35
> db.test.find(, ]})
--下面的示例演示了如何混合使用$or和$in。
> db.test.find(}, ]})
--$not表示取反,等同於sql中的not。
> db.test.find(}})
3. null資料型別的查詢:
--在進行值為null資料的查詢時,所有值為null,以及不包含指定鍵的文件均會被檢索出來。
> db.test.find()
--需要將null作為陣列中的乙個元素進行相等性判斷,即便這個陣列中只有乙個元素。
--再有就是通過$exists判斷指定鍵是否存在。
> db.test.find(})
4. 正則查詢:
--mongodb中使用了perl規則的正則語法。如:
> db.test.find()
--i表示忽略大小寫
> db.test.find()
5. 陣列資料查詢:
--基於陣列的查詢。
--為後面的實驗構造資料。
--為後面的示例構造測試資料。
> db.test.find()
, "age" : 45 }
--當嵌入式文件為陣列時,需要$elemmatch操作符來幫助定位某乙個元素匹配的情況,否則嵌入式檔案將進行全部的匹配。
--即檢索時需要將所有元素都列出來作為查詢條件方可。
> db.test.findone(),]
}> db.test.find(}}}
, ] }
7. 游標:
資料庫使用游標來返回find()的執行結果,客戶端對游標可以進行有效的控制,如:限定結果集的數量、跳過部分結果、基於任意鍵的任意方向的排序等。
下面的例子將用於準備測試資料。
> db.testtable.remove()
> for (i = 0; i < 10; ++i) )
... }
我們可以通過cursor提供的hasnext()方法判斷是否還有未讀取的資料,再通過next()方法讀取結果集中的下乙個文件。如:
> var c = db.testtable.find()
> while (c.hasnext()) 01
2345
6789
當呼叫find()的時候,shell並不立即查詢資料庫,而是等待真正開始要求獲得結果的時候才傳送查詢,這樣在執行之前可以給查詢附加額外的選項。幾乎所有的游標方法都返回本身,因此可以像下面這樣將游標的方法鏈式組合起來。如:
> var c1 = db.testtable.find().sort().limit(1).skip(4);
> var c2 = db.testtable.find().limit(1).sort().skip(4);
> var c3 = db.testtable.find().skip(4).limit(1).sort();
此時,查詢並未執行,所有這些函式都是在構造查詢,當執行下面的語句時,查詢將被真正執行,
> c.hasnext()
查詢被傳送到伺服器,mongodb伺服器每次將返回一批資料,當本批被全部迭代後再從伺服器讀取下一批資料,直至查詢結果需要的資料被全部迭代。
對於上面的示例,limit(1)表示輸出結果僅為乙個,如果小於1,則不輸出,即limit(n)函式限定的是最多輸出結果。skip(4)表示跳過查詢結果中的前4個文件,如果結果小於4,則不會返回任何文件。sort()用於設定排序條件,即按照x鍵以公升序(1)的方式排序,如果需要降序排序可以改為:sort()。sort也可以支援多鍵排序,如:sort()即先按照username進行公升序排序,如果username的值相同,再以age鍵進行降序排序。這裡需要指出的是,如果skip過多的文件,將會導致效能問題。
MongoDB學習筆記3 查詢
1.基本查詢 構造查詢資料。db.test.findone 多條件查詢。下面的示例等同於sql語句的where name stephen and age 35 db.test.find 返回指定的文件鍵值對。下面的示例將只是返回name和age鍵值對。db.test.find 指定不返回的文件鍵值對...
mongodb 學習筆記 高階查詢
spring 整合mongodb 高階查詢 分組查詢 groupby groupbyresultsorg.springframework.data.mongodb.core.mongotemplate.group criteria arg0,string arg1,groupby arg2,clas...
MongoDB學習筆記5 測試查詢效能
大規模資料匯入實驗 在上乙個實驗 中,我們測試了匯入資料的效能,簡單總結一下測試方法 1.schema 每行資料三個字段,日期 id和當日流量,都是長整型 2.index inventory.create index date ascending id ascending unique false,...