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来筛选了。

猜你喜欢

转载自blog.csdn.net/master_ning/article/details/80512988