猫鼬如何从填充中排除_id

Posted

技术标签:

【中文标题】猫鼬如何从填充中排除_id【英文标题】:mongoose How to exclude _id from populated 【发布时间】:2017-12-06 09:24:10 【问题描述】:

我正在我的角色文档中填充 _group

return this.find(query, '_group': 1, 'name':1, 'description': 1 )
  .populate('_group', ['name', 'description'])
  .sort( createdAt: -1 )
  ...

我还得到了 _group 的 _id

"_id":"5959ef7db9938a0600f05eb2",
"_group":
    "_id":"5959ef7db9938a0600f05eae",
    "name":"GroupA",
     "description":"Description GroupA"
 ,
"name":"manager",
"description":"can R group, can RW user",

我怎样才能摆脱 _group._id ?

我试过了:

 return this.find(query, '_group': 1, 'name':1, '_group._id':0, '_id':0 )

但它会引发错误:投影不能混合包含和排除。

return this.find(query, '_group': 1, 'name':1, '_id':0, '_id':0

仅删除角色._id

感谢反馈

【问题讨论】:

在填充 select: '-_id' 中使用选择 也可以使用 query.only 但已弃用 mongoosejs.com/docs/2.7.x/docs/query.html#only 【参考方案1】:
return this.find(query, '_group': 1, 'name':1, 'description': 1 ).
    populate(
        path: '_group',
        select: 'name description -_id',
      ).sort( createdAt: -1 )

在您的示例中使用此逻辑

【讨论】:

非常感谢...但是对于文档 ID 使用减号而不是 0 是多么奇怪的方式...

以上是关于猫鼬如何从填充中排除_id的主要内容,如果未能解决你的问题,请参考以下文章

如何使用父引用填充猫鼬中的一对多关系?

如何从 Mongoose 填充查询中排除空值

猫鼬填充 - 何时

猫鼬填充如何在同一对象而不是子文档中填充文档

在猫鼬中填充引用到其他字段而不是_id,引用自定义字段而不是_id

在猫鼬中填充+聚合[重复]