首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >猫鼬排除查找中的字段

猫鼬排除查找中的字段
EN

Stack Overflow用户
提问于 2017-05-17 09:00:06
回答 1查看 508关注 0票数 0

我遇到了一个问题:我需要从Mongoose返回的响应中删除一个_id字段。我使用lookup来连接来自两个集合的数据。我也用

代码语言:javascript
运行
复制
aggregate({
    '$project': { _id: 0 }
})

但这不包括顶级文档中的_id字段,而不是通过lookup嵌套的文档。

有什么想法吗?

这里有一个例子:比方说,我有两个模型:作者和书籍。作者模型返回的文档如下:

代码语言:javascript
运行
复制
{ _id: '123', name: 'Jules Verne' }

图书模型返回这样的文档:

代码语言:javascript
运行
复制
{ _id: '555', title: 'Around the World in Eighty Days', author_id: '123' }

使用猫鼬lookup与params:

代码语言:javascript
运行
复制
{ from: 'books', localField: '_id', foreignField: 'author_id', as: 'wrote' }

我会得到这样的回应:

代码语言:javascript
运行
复制
{ _id: '123', 
  name: 'Jules Verne',  
  wrote: [
    { _id: '555', title: 'Around the World in Eighty Days', author_id: '123' }
  ]
}

我不需要_id字段,既不适合作者也不需要书籍。对于作者来说,我可以通过使用'$project': { _id: 0 }来摆脱这个字段。但是如何从_id数组中的文档中删除wrote字段呢?

EN

回答 1

Stack Overflow用户

发布于 2017-05-17 10:35:41

你可以这样做:

代码语言:javascript
运行
复制
//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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44020146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档