使用MongoDB的時候需要只查詢指定的字段進行返回,也就是類似mysql里面的 SELECT id,name,age 這樣而不是SELECT *。在MongoDB里面映射(projection)聲明用來限制所有查詢匹配文檔的返回字段。projection以文檔的形式列舉結果集中要包含或者排除的字段。可以指定要包含的字段(例如:{field:1})或者指定要排除的字段(例如:{field:0})。默認_id是包含在結果集合中的,要從結果集中排除_id字段,需要在projection中指定排除_id字段({_id:0})。除了_id字段,不能在一個projection中聯合使用包含和排除語意。
返回匹配文檔的所有字段: 如果沒有指定projection,find()方法返回所有匹配文檔的所有字段。 db.tbl_user.find({name:'lily'}) //這個例子將返回tbl_user集合中name字段的值為"lily"的所有文檔,返回的文檔包含全部字段。 返回指定字段和_id字段: 一個projection可以明確地指定多個字段。下面的操作中,find()方法返回匹配的所有文檔。在結果集中,只有name和age字段,默認_id字段也是返回的。 db.tbl_user.find({name:'lily'}, {name:1,age:1} ) 僅返回指定字段: 可以通過在projection中指定排除_id字段將其從結果中去掉,如下例子所示: db.tbl_user.find({name:'lily'}, {name:1,age:1, _id:0 } ) 返回除排除掉以外的字段: 可以使用一個projection排除一個或者一組字段,如下: db.tbl_user.find({name:'lily'}, {name:0} ) //這個操作返回所有name字段值為lily的文檔,在結果中name字段不返回。
數組字段的projection:
$elemMatch 和 $slice運算符是對數組進行projection的唯一途徑。