1. 程式人生 > >mongodb 內嵌陣列查詢

mongodb 內嵌陣列查詢

Mongodb 在使用有內嵌陣列文件組成的資料模型時,在查詢中可以使用find方法進行查詢,當我們希望可以查詢所有登入時間為20161015的的所有角色的id時,可以db.login.find({“Login.date”: 20161015}),mongdb 通過點操作符來匹配陣列中的文件,這時候會匹配所有的login陣列中登入日期含有20161015的文件,不過這種查詢有會返回匹配到的文件的所有欄位集合,很明顯登入時間是一個不斷增長的資料,那麼在資料過大的時候,mongodb就會引起效能上的問題,因此我修改查詢方式為db.login.find({“Login.date”:20161015},{roleId:1})對顯示的欄位進行限制
,這樣返回的就只是匹配到的roleId,而當我們需要知道這一天的登入次數的時候,就需要需要對陣列進行顯示,好在mongodb已經考慮到這種情況,我們只需要在顯示欄位使用Login.$,mongodb中,查詢中,$符代表了查詢到的匹配文件,也就是說用db.login.find({“Login.date”:20161015},{roleId:1,”Login.$”:1}),在查詢的結果中,就只有顯示匹配的陣列中的文件欄位。