MongoDB基礎教程系列--第五篇 MongoDB 映射與限制記錄

來源:互聯網
上載者:User

標籤:利用   方法   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 映射與限制記錄

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.