1. 程式人生 > >MongoDB基礎教程系列--第五篇 MongoDB 對映與限制記錄

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

https://www.cnblogs.com/liruihuan/p/6670289.html

上一篇提到的 find() 的方法,細心的夥伴會發現查詢的結果都是顯示了集合中全部的欄位,實際應用中,顯然是不夠用的。那麼有沒有辦法指定特定的欄位顯示出文件呢?答案是肯定的,MongoDB 中用對映實現這種功能。

1、對映

MongoDB 中限制欄位的顯示,可以利用 0 或 1 來設定欄位列表。1 用於顯示欄位,0 用於隱藏欄位。

格式

1

db.COLLECTION_NAME.find({},{KEY:1})

範例

查詢文件時,只顯示文件中的 name。首先查詢出 user 集合中的所有文件,然後利用對映,返回文件中 name 欄位。

1

2

3

4

5

6

7

8

9

10

11

12

> 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 會返回什麼結果呢

1

2

3

4

5

6

> 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() 方法接受一個數值型別的引數,其值為想要顯示的文件數。

格式

1

db.COLLECTION_NAME.find().limit(NUMBER)

範例

查詢文件時,只顯示兩條文件。首先查詢出 user 集合中的所有文件,然後利用 limit() 方法,顯示兩條記錄。

1

2

3

4

5

6

7

8

9

10

> 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() 指定引數呢,我們會發現,返回了全部文件。

1

2

3

4

5

> 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() 方法接受一個數值型別的引數,其值為想要跳過的文件數。

格式

1

db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

範例

查詢文件時,只顯示第二條文件。首先查詢出 user 集合中的所有文件,然後利用 limit(1) 方法,顯示一條文件,利用 skip(1) 方法跳過第一條文件。

1

2

3

4

5

6

7

8

9

> 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 。

1

2

3

4

5

6

7

8

9

10

11

12

> 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" }

>