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來篩選了。