這邊提幾個基本的查詢容易犯得錯,之後再追加比較進階的部分。
- 只是要確認存在,讓DB只回覆 _id,不需要整個回覆
常見的
| 12
 3
 4
 
 | db.users.findOne({'username' : 'pattri'
 'pwd' : 'iampass123'
 })
 
 | 
其實只要回覆 _id,這樣可以提高傳輸效率
| 12
 3
 4
 
 | db.users.findOne({'username' : 'pattri'
 'pwd' : 'iampass123'
 }, { '_id':1 } )
 
 | 
| 12
 3
 4
 
 | db.users.find({{ 'age': {'$gte': 30} ,
 { 'age': {'$lte': 40} ,
 } )
 
 | 
正確的應該是
| 12
 3
 
 | db.users.find({'age': {'$gte': 30, '$lte': 40}
 } )
 
 | 
- 使用 $nin 效率會比 $in 來得高
- 子查詢的順序是有差別的
Sample:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 | {"_id" : ObjectId("5cb4a9226820f1f878f93d82"),
 "key" : "key.1",
 "localization" : [
 {
 "langCode" : "en-gb",
 "displayValue" : "display_en-gb.1"
 },
 {
 "langCode" : "zh-tw",
 "displayValue" : "display_zh-tw.1"
 }
 ]
 }
 
 | 
若按順序搜尋 langCode 、 displayValue 的話,可以找到結果
| 12
 3
 4
 5
 6
 
 | db.col.find({'localization' :
 {
 'langCode' : 'en-gb' , 'displayValue' : 'display_en-gb.1'
 }
 })
 
 | 
若沒有按順序搜尋,先查找 displayValue 再 langCode 則會找不到資料!!
| 12
 3
 4
 5
 6
 
 | db.col.find({'localization' :
 {
 'displayValue' : 'display_en-gb.1', 'langCode' : 'en-gb'
 }
 })
 
 | 
這個不是注意事項,是留個語法,不過要特別注意子文件查詢的效能。
Sample:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 
 | {"_id" : ObjectId("5cb4a9226820f1f878f93d82"),
 "key" : "key.1",
 "localization" : [
 {
 "langCode" : "en-gb",
 "displayValue" : "display_en-gb.1"
 },
 {
 "langCode" : "zh-tw",
 "displayValue" : "display_zh-tw.1"
 }
 ]
 },
 {
 "_id" : ObjectId("5cb4a9226820f1f878f93d88"),
 "key" : "key.2",
 "localization" : [
 {
 "langCode" : "en-gb",
 "displayValue" : "display_en-gb.2"
 },
 {
 "langCode" : "zh-tw",
 "displayValue" : "display_zh-tw.2"
 }
 ]
 }
 
 | 
如果想找出 langCode = ‘en-gb’ 的所有 displayValue 組合,可以這樣做:
| 12
 3
 4
 
 | db.col.find({'localization.langCode' : 'en-gb'},
 {'localization.$' : 1}
 )
 
 | 
這樣zh-tw的內容就不會出現了,結果如下:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 
 | {"_id" : ObjectId("5cb4a9226820f1f878f93d82"),
 "localization" : [
 {
 "langCode" : "en-gb",
 "displayValue" : "display_en-gb.1"
 }
 ]
 }
 {
 "_id" : ObjectId("5cb4a9226820f1f878f93d88"),
 "localization" : [
 {
 "langCode" : "en-gb",
 "displayValue" : "display_en-gb.2"
 }
 ]
 }
 
 |