本篇簡單介紹在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。
參考:
沒有留言:
張貼留言