網頁

2019/8/10

MongoDB 查詢資料比較運算子語法範例

本篇簡單介紹在MongoDB查詢資料時如何使用比較運算子(Comparison Query Operators)來篩選查詢資料的語法。

在MongoDB建立資料請參考MongoDB 使用mongo shell新增多筆資料

members集合建立一些資料如下:

{ "_id" : ObjectId("5d4e5fb28ef1d4239e23e5b3"), "name" : "王大明", "age" : 26 }
{ "_id" : ObjectId("5d4e5fb28ef1d4239e23e5b4"), "name" : "黃小玉", "age" : 19 }
{ "_id" : ObjectId("5d4e5fb28ef1d4239e23e5b5"), "name" : "李小芳", "age" : 23 }

查詢資料使用db.collection.find()collection為要查詢的Collection名稱,本範例為members


All

查詢全部資料使用db.collection.find()不傳入任何參數。

> db.members.find( {} )
{ "_id" : ObjectId("5d4e5fb28ef1d4239e23e5b3"), "name" : "王大明", "age" : 26 }
{ "_id" : ObjectId("5d4e5fb28ef1d4239e23e5b4"), "name" : "黃小玉", "age" : 19 }
{ "_id" : ObjectId("5d4e5fb28ef1d4239e23e5b5"), "name" : "李小芳", "age" : 23 }

其作用類似SQL的SELECT * FROM members;



使用db.collection.find()查詢時可在傳入參數中使用Comparison query operator來依條件查詢,用法如下:

{ field: { <comparison query operators>: value } }

參數最外層以大括弧包起,左邊為要比較的field名稱;field的右邊為以大括弧包起的comparison query operator與field的值。


Equal

查詢等於某個條件的資料,例如age = 23,則直接將要比對的屬性與值{ age: 23 }作為參數傳入。

> db.members.find( { age: 23 } )
{ "_id" : ObjectId("5d4e5fb28ef1d4239e23e5b5"), "name" : "李小芳", "age" : 23 }

相當於使用$eq

> db.members.find( { age: { $eq: 23 } } )
{ "_id" : ObjectId("5d4e5fb28ef1d4239e23e5b5"), "name" : "李小芳", "age" : 23 }

效果類似SQL的SELECT * FROM members WHERE age = 23;


Less than

查詢小於某個條件的資料,例如age < 23,使用$lt

> db.members.find( { age: { $lt: 23 } } )
{ "_id" : ObjectId("5d4e5fb28ef1d4239e23e5b4"), "name" : "黃小玉", "age" : 19 }

效果類似SQL的SELECT * FROM members WHERE age < 23;


Greater than

查詢大於某個條件的資料,例如age > 23,使用$gt

> db.members.find( { age: { $gt: 23 } } )
{ "_id" : ObjectId("5d4e5fb28ef1d4239e23e5b3"), "name" : "王大明", "age" : 26 }

效果類似SQL的SELECT * FROM members WHERE age > 23;


Greater than or Equal

查詢大於等於某個條件的資料,例如age >= 23,使用$gte

> db.members.find( { age: { $gte: 23 } } )
{ "_id" : ObjectId("5d4e5fb28ef1d4239e23e5b3"), "name" : "王大明", "age" : 26 }
{ "_id" : ObjectId("5d4e5fb28ef1d4239e23e5b5"), "name" : "李小芳", "age" : 23 }

效果類似SQL的SELECT * FROM members WHERE age >= 23;


IN

查詢指定包含多個條件的資料,例如age in (19, 23),使用$in

> db.members.find( { age: { $in: [ 19, 23 ] } } )
{ "_id" : ObjectId("5d4e5fb28ef1d4239e23e5b4"), "name" : "黃小玉", "age" : 19 }
{ "_id" : ObjectId("5d4e5fb28ef1d4239e23e5b5"), "name" : "李小芳", "age" : 23 }

效果類似SQL的SELECT * FROM members WHERE age IN (19, 23);


其餘的比較運算子請參考Comparison Query Operators


參考:

沒有留言:

張貼留言