MongoDB 投影的注意事項

mongodb 投影意思是隻選擇必要的數據而不是選擇一個文件的數據的整個。例如一個文檔有5個字段,只需要顯示其中3個

find() 方法

在MongoDB中,當執行find()方法,那麼它會顯示一個文檔所有字段。要限制這一點,需要設置的字段列表值1或0。

1用來顯示字段而0是用來隱藏字段。

語法:

find()方法具有投影基本語法如下

db.集合名稱.find({},{字段名稱:1,...})

假設有如下集合:

{ "_id" : 1, "name" : "郭靖", "hometown" : "蒙古", "age" : 20, "gender" : true }
{ "_id" : 2, "name" : "黃蓉", "hometown" : "桃花島", "age" : 18, "gender" : false }
{ "_id" : 3, "name" : "華箏", "hometown" : "蒙古", "age" : 18, "gender" : false }
{ "_id" : 4, "name" : "黃藥師", "hometown" : "桃花島", "age" : 40, "gender" : true }
{ "_id" : 5, "name" : "段譽", "hometown" : "大理", "age" : 16, "gender" : true }

{ "_id" : 6, "name" : "段王爺", "hometown" : "大理", "age" : 45, "gender" : true }

只顯示name字段

db.stu.find({},{name:1})

結果如下:

 db.stu.find({},{name:1})
{ "_id" : 1, "name" : "郭靖" }
{ "_id" : 2, "name" : "黃蓉" }
{ "_id" : 3, "name" : "華箏" }
{ "_id" : 4, "name" : "黃藥師" }
{ "_id" : 5, "name" : "段譽" }
{ "_id" : 6, "name" : "段王爺" }

顯示name,age自段

db.stu.find({},{name:1,age:1})
{ "_id" : 1, "name" : "郭靖", "age" : 20 }
{ "_id" : 2, "name" : "黃蓉", "age" : 18 }
{ "_id" : 3, "name" : "華箏", "age" : 18 }
{ "_id" : 4, "name" : "黃藥師", "age" : 40 }
{ "_id" : 5, "name" : "段譽", "age" : 16 }

{ "_id" : 6, "name" : "段王爺", "age" : 45 }

不顯示name自段:

db.stu.find({},{name:0})
{ "_id" : 1, "hometown" : "蒙古", "age" : 20, "gender" : true }
{ "_id" : 2, "hometown" : "桃花島", "age" : 18, "gender" : false }
{ "_id" : 3, "hometown" : "蒙古", "age" : 18, "gender" : false }
{ "_id" : 4, "hometown" : "桃花島", "age" : 40, "gender" : true }
{ "_id" : 5, "hometown" : "大理", "age" : 16, "gender" : true }

{ "_id" : 6, "hometown" : "大理", "age" : 45, "gender" : true }

顯示name自段,不顯示age自段:

db.stu.find({},{name:1,age:0})

語法是沒錯的,答案,應該是顯示name自段,age自段不顯示,那麼,真實結果是什麼樣的呢:


其實,這種語法是不對的,MongoDB本身就不支持這種語法。。。

如果說,一定要顯示哪個,哪個不顯示,那就通過全部是0,或者全部是1來篩選了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章