2017-05-17 113 views
0

我遇到了一個問題:我需要從Mongoose返回的響應中刪除_id字段。我使用lookup來連接來自兩個集合的數據。此外,我使用貓鼬在搜索中排除字段

aggregate({ 
    '$project': { _id: 0 } 
}) 

但是,這不包括_id領域從頂層文件,而不是從文檔,通過lookup嵌套。

任何想法?

下面是一個例子:假設我有兩種模型:作者和書籍。作者模型返回記錄是這樣的:

{ _id: '123', name: 'Jules Verne' } 

書籍模型的回報,例如DOC:

{ _id: '555', title: 'Around the World in Eighty Days', author_id: '123' } 

使用使用參數貓鼬lookup

{ from: 'books', localField: '_id', foreignField: 'author_id', as: 'wrote' } 

我會得到這樣的回答:

{ _id: '123', 
    name: 'Jules Verne', 
    wrote: [ 
    { _id: '555', title: 'Around the World in Eighty Days', author_id: '123' } 
    ] 
} 

我並不需要_id字段既不是作者也不是書籍。對於作者,我可以使用'$project': { _id: 0 }擺脫這個領域。但是,如何從wrote數組中的文檔中刪除_id字段?

回答

0

你可以這樣說:

//for example you have User schema 
const userSchema = new mongoose.Schema({ 
    email: String, 
    name: String, 
    gender: String 
}); 

userSchema.methods.getPublicFields = function() { 
    return { 
    email: this.email, 
    name: this.name 
    }; 
}; 

const User = mongoose.model('User', userSchema); 
+0

更新我的問題有一個例子來闡明這個問題 –