f 神奇的Mongodb $elemMatch Operator ~ 迪貝之家

神奇的Mongodb $elemMatch Operator

 

這是個神奇的東西
既可做查詢條件
也可做為Projection的設定
一開始我其實搞不太清楚它與field.field.field....格式間的差異
看了資料結構後
我才恍然大悟
field.field.field.... 是給只有單一document
elemMatch 是用來找array的內容是document
舉個例子來看,就清楚了
這是relationships欄位的資料結構
它是document array























db.companies.find({ "relationships":
                      { "$elemMatch": { "is_past": true,
                                        "person.first_name": "Mark" } } },
                  { "name": 1 }).pretty()

我們接著來看elemMatch怎麼當作Projection
先瞧瞧scores的資料結構
教材裡的設定
是只顯示超過85分的document
而不是給你所有的scores的資料
db.grades.find({ "class_id": 431 }, { "scores": { "$elemMatch": { "score": { "$gt": 85 } } } }).pretty()

其實Mongodb都把他們的教學影片公開在youtube
我只要註明出處
就不會違反著作權了
更何況我又沒拿來營利....
出處:
https://youtu.be/Vo3SntUloY8
https://youtu.be/8FDWzlkB-oo