標籤:利用 方法 key -- 參數 迴文 跳過 返回 use
上一篇提到的 find() 的方法,細心的夥伴會發現查詢的結果都是顯示了集合中全部的欄位,實際應用中,顯然是不夠用的。那麼有沒有辦法指定特定的欄位顯示出文檔呢?答案是肯定的,MongoDB 中用映射實現這種功能。
1、映射
MongoDB 中限制欄位的顯示,可以利用 0 或 1 來設定欄位列表。1 用於顯示欄位,0 用於隱藏欄位。
格式
db.COLLECTION_NAME.find({},{KEY:1})
範例
查詢文檔時,只顯示文檔中的 name。首先查詢出 user 集合中的所有文檔,然後利用映射,返迴文檔中 name 欄位。
> db.user.find(){ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18,"sex":"man" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754d"), "name" : "user1", "age" : 19,"sex":"man" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754e"), "name" : "user2", "age" : 20,"sex":"woman" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754f"), "name" : "user3", "age" : 19,"sex":"woman" }>db.user.find({},{"name":1, "_id":0}){ "name" : "liruihuan" }{ "name" : "user1" }{ "name" : "user2" }{ "name" : "user3" }>
如果不加 "_id":0 會返回什麼結果呢
> db.user.find({},{"name":1}){ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754d"), "name" : "user1" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754e"), "name" : "user2" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754f"), "name" : "user3" }>
我們發現不設定 "_id":1 結果中也會返回 _id 欄位,這是因為在執行 find() 方法時,_id 欄位是一直顯示的。如果不想顯示該欄位,則可以設定 "_id":0。
2、限制記錄
MongoDB 中想要顯示或者跳過指定的文檔條數,可以利用 limit() 方法和 skip() 方法
2.1、limit() 方法
limit() 方法接受一個數實值型別的參數,其值為想要顯示的文檔數。
格式
db.COLLECTION_NAME.find().limit(NUMBER)
範例
查詢文檔時,只顯示兩條文檔。首先查詢出 user 集合中的所有文檔,然後利用 limit() 方法,顯示兩條記錄。
> db.user.find(){ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18,"sex":"man" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754d"), "name" : "user1", "age" : 19,"sex":"man" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754e"), "name" : "user2", "age" : 20,"sex":"woman" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754f"), "name" : "user3", "age" : 19,"sex":"woman" }>db.user.find().limit(2){ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18,"sex":"man" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754d"), "name" : "user1", "age" : 19,"sex":"man" }>
如果不給 limit() 指定參數呢,我們會發現,返回了全部文檔。
> db.user.find().limit(){ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18,"sex":"man" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754d"), "name" : "user1", "age" : 19,"sex":"man" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754e"), "name" : "user2", "age" : 20,"sex":"woman" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754f"), "name" : "user3", "age" : 19,"sex":"woman" }
2.2、skip() 方法
skip() 方法接受一個數實值型別的參數,其值為想要跳過的文檔數。
格式
db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
範例
查詢文檔時,只顯示第二條文檔。首先查詢出 user 集合中的所有文檔,然後利用 limit(1) 方法,顯示一條文檔,利用 skip(1) 方法跳過第一條文檔。
> db.user.find(){ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18,"sex":"man" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754d"), "name" : "user1", "age" : 19,"sex":"man" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754e"), "name" : "user2", "age" : 20,"sex":"woman" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754f"), "name" : "user3", "age" : 19,"sex":"woman" }>db.user.find().limit(1).skip(1){ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754d"), "name" : "user1", "age" : 19,"sex":"man" }>
skip() 方法的預設值是 0 。
> db.user.find(){ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18,"sex":"man" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754d"), "name" : "user1", "age" : 19,"sex":"man" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754e"), "name" : "user2", "age" : 20,"sex":"woman" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754f"), "name" : "user3", "age" : 19,"sex":"woman" }> db.user.find().skip(){ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754b"), "name" : "liruihuan", "age" : 18,"sex":"man" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754d"), "name" : "user1", "age" : 19,"sex":"man" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754e"), "name" : "user2", "age" : 20,"sex":"woman" }{ "_id" : ObjectId("58e1d2f0bb1bbc3245fa754f"), "name" : "user3", "age" : 19,"sex":"woman" }>
業精於勤,荒於嬉;行成于思,毀於隨。
如果你覺得這篇文章不錯或者對你有所協助,可以通過右側【打賞】功能,給予博主一點點鼓勵和支援
MongoDB基礎教程系列--第五篇 MongoDB 映射與限制記錄