2016-09-24 43 views
1

比方說,我有一個集合People具有以下文檔中:有沒有辦法只返回在Mongoose模式中定義的字段?

{ 
    "name": "John", 
    "age": 25, 
    "gender": "male" 
} 

和兩個架構的文檔,一個應該返回的所有信息,而另一個只能返回的信息的子集:

var Person = mongoose.Schema({ "name": String, "age": Number, "gender": String}, {collection: "People"); 
var PersonName = mongoose.Schema({ "name": String }, {collection: "People"}); 

如何獲得PersonName只返回名字?

目前,我有一個包含大量不必要信息的文檔,並且希望在使用.find()時僅返回一部分數據。我已經定義了一個模式並手動設置了它的集合。違背定義的模式,它返回所有字段。

回答

0

無需定義另一個模式以從集合中獲取特定屬性。只需在find()函數中指定要返回的屬性作爲投影選項。

Schema.find(query,options,callbackFunction); 

,如:

person.find({},{name:1}, function(err, docs) {//used name:1 to return only name 
    if(error) { 
     return res.status(400).send({msg: "error"}); 
    } 
    return res.status(200).send(docs); 
}); 
+0

這會工作,但那裏只是還從架構拉的方式,因爲我的架構已經嵌套領域,是不是我提供的例子更復雜一點。 –

+0

你可以在投影選項中選擇嵌套對象,如'{「name.firstName」:1}'。然而,你應該提供有問題的實際問題,那麼我們可以提供完美的解決方案,否則你期望完美的解決方案。:) –

+0

它不是一個好主意定義多個模式來從模式中獲取一些字段。 (我的想法) –

相關問題