MongoDB之資料查詢(where條件過濾)
實際上習慣於傳統關係型資料庫開發的我們對於資料的篩選,可能首先想到的where子句,所以在MongoDB裡面也提供有“$where”。
範例:使用where進行資料查詢
> db.emp.find({"$where":"this.age>40"}).pretty();
{
"_id" : ObjectId("599108423268c8e84253be2c"),
"name" : "鄭七",
"sex" : "女",
"age" : 50,
"sal" : 4700,
"loc" : "成都"
或者:
> db.emp.find("this.age>40").pretty();
{
"_id" : ObjectId("599108423268c8e84253be2c"),
"name" : "鄭七",
"sex" : "女",
"age" : 50,
"sal" : 4700,
"loc" : "成都"
}
對於“$where”是可以簡化的,但是這類的操作是屬於進行每一行的資訊判斷,實際上對於資料量較大的情況並不方便使用。實際上以上的程式碼嚴格來講是屬於編寫一個操作的函式。
> db.emp.find(function(){return this.age>40;}).pretty();
{
"_id" : ObjectId("599108423268c8e84253be2c"),
"name" : "鄭七",
"sex" : "女",
"age" : 50,
"sal" : 4700,
"loc" : "成都"
}
> db.emp.find({"$where":function(){return this.age>40;}}).pretty();
{
"_id" : ObjectId("599108423268c8e84253be2c"),
"name" : "鄭七",
"sex" : "女",
"age" : 50,
"sal" : 4700,
"loc" : "成都"
}
以上只是查詢了一個判斷,如果想要實現多個條件的判斷,那麼就需要使用and連線。
> db.emp.find({"$and":[{"$where":"this.age>20"},{"$where":"this.age<25"}]}).pretty();
{
"_id" : ObjectId("599108423268c8e84253be27"),
"name" : "錢二",
"sex" : "女",
"age" : 22,
"sal" : 5000,
"loc" : "上海"
}
{
"_id" : ObjectId("599148bd0184ff511bf02b91"),
"name" : "林A",
"sex" : "男",
"age" : 22,
"sal" : 8000,
"loc" : "北京",
"course" : [
"語文",
"數學",
"英語",
"音樂",
"政治"
],
"parents" : [
{
"name" : "林A父親",
"age" : 50,
"job" : "農民"
},
{
"name" : "林A母親",
"age" : 49,
"job" : "工人"
}
]
}
雖然這種形式的操作可以實現資料查詢,但是最大的缺點是將在MongoDB裡面儲存的BSON資料變成了JavaScript的語法結構,這樣的方式不方便使用資料庫索引機制。
範例:使用where進行資料查詢
> db.emp.find({"$where":"this.age>40"}).pretty();
{
"_id" : ObjectId("599108423268c8e84253be2c"),
"name" : "鄭七",
"sex" : "女",
"age" : 50,
"sal" : 4700,
"loc" : "成都"
或者:
> db.emp.find("this.age>40").pretty();
{
"_id" : ObjectId("599108423268c8e84253be2c"),
"name" : "鄭七",
"sex" : "女",
"age" : 50,
"sal" : 4700,
"loc" : "成都"
}
對於“$where”是可以簡化的,但是這類的操作是屬於進行每一行的資訊判斷,實際上對於資料量較大的情況並不方便使用。實際上以上的程式碼嚴格來講是屬於編寫一個操作的函式。
> db.emp.find(function(){return this.age>40;}).pretty();
{
"_id" : ObjectId("599108423268c8e84253be2c"),
"name" : "鄭七",
"sex" : "女",
"age" : 50,
"sal" : 4700,
"loc" : "成都"
}
> db.emp.find({"$where":function(){return this.age>40;}}).pretty();
{
"_id" : ObjectId("599108423268c8e84253be2c"),
"name" : "鄭七",
"sex" : "女",
"age" : 50,
"sal" : 4700,
"loc" : "成都"
}
以上只是查詢了一個判斷,如果想要實現多個條件的判斷,那麼就需要使用and連線。
> db.emp.find({"$and":[{"$where":"this.age>20"},{"$where":"this.age<25"}]}).pretty();
{
"_id" : ObjectId("599108423268c8e84253be27"),
"name" : "錢二",
"sex" : "女",
"age" : 22,
"sal" : 5000,
"loc" : "上海"
}
{
"_id" : ObjectId("599148bd0184ff511bf02b91"),
"name" : "林A",
"sex" : "男",
"age" : 22,
"sal" : 8000,
"loc" : "北京",
"course" : [
"語文",
"數學",
"英語",
"音樂",
"政治"
],
"parents" : [
{
"name" : "林A父親",
"age" : 50,
"job" : "農民"
},
{
"name" : "林A母親",
"age" : 49,
"job" : "工人"
}
]
}
雖然這種形式的操作可以實現資料查詢,但是最大的缺點是將在MongoDB裡面儲存的BSON資料變成了JavaScript的語法結構,這樣的方式不方便使用資料庫索引機制。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28536251/viewspace-2144299/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料泵過濾匯出資料的where條件
- mysql多條件過濾查詢之mysq高階查詢MySql
- 34. 過濾條件、多表查詢、子查詢
- MongoDB查詢條件MongoDB
- MongoDB條件查詢MongoDB
- MySQL全面瓦解7:查詢的過濾條件MySql
- JN專案-查詢條件過濾特殊字元字元
- 自定義 Azure Table storage 查詢過濾條件
- mongodb條件查詢不等於MongoDB
- MongoDB操作之遍歷集和條件查詢操作MongoDB
- mysql,where條件查詢等學習筆記MySql筆記
- SqlServer儲存過程應用二:分頁查詢資料並動態拼接where條件SQLServer儲存過程
- MYSQL學習筆記6: DQL條件查詢(where)MySql筆記
- MongoDB之資料查詢操作MongoDB
- SpringBoot整合Jpa對資料進行排序、分頁、條件查詢和過濾Spring Boot排序
- MongoDB之資料查詢(資料排序)MongoDB排序
- 深入理解mongodb查詢條件語句MongoDB
- Lambda表示式where過濾資料
- oracle date資料的條件查詢Oracle
- MongoDB之資料查詢(陣列)MongoDB陣列
- 帶你讀 MySQL 原始碼:where 條件怎麼過濾記錄?MySql原始碼
- where語句中多條件查詢欄位NULL與NOT NULL不確定性查詢Null
- 關於 hibernate 邏輯刪除 預設查詢過濾條件問題(java set 條件)Java
- 條件過濾檢索
- MongoDB之資料查詢(巢狀集合)MongoDB巢狀
- 無合適where條件過濾時儘量選擇order by後的欄位以驅動表進行查詢薦
- MySQL核心技術之“WHERE條件”MySql
- 根據查詢條件批量修改表資料
- 儲存過程WHERE條件不生效儲存過程
- mysql條件查詢MySql
- MongoDB之資料查詢(分頁顯示)MongoDB
- MongoDB之資料查詢(正規表示式)MongoDB
- MongoDB之資料查詢(關係運算)MongoDB
- MongoDB之資料查詢(邏輯運算)MongoDB
- MongoDB之資料查詢(範圍運算)MongoDB
- MongoDB之資料查詢(欄位判斷)MongoDB
- MongoDB查詢(陣列、內嵌文件和$where)MongoDB陣列
- 資料型別為date作為查詢條件資料型別