如何在Mongoose中创建移除指定字段的视图?
如何在MongoDB视图中移除指定字段
你提到用$unset移除name和email字段时抛出无效错误,这时候可以改用$project阶段来处理字段排除,这是创建MongoDB视图时处理字段更稳妥的方式:
方案一:排除不需要的字段
通过$project将不需要的字段设为0,视图会保留原集合中除这些字段外的所有内容:
await RedactedUser.createCollection({ viewOn: 'users', // 注意这里填集合名,不是模型名 pipeline: [ { $project: { name: 0, email: 0 } } ] });
方案二:明确指定保留的字段
如果只需要保留特定字段,直接在$project中列出这些字段并设为1,未列出的字段会被自动排除:
await RedactedUser.createCollection({ viewOn: 'users', pipeline: [ { $project: { _id: 1, age: 1, // 添加其他需要保留的字段 } } ] });
至于$unset报错的原因,可能是你的MongoDB版本对视图管道中的$unset支持有限,或者语法存在疏漏。相比之下,$project是视图场景下处理字段过滤的标准方式,兼容性和稳定性都更好。
内容的提问来源于stack exchange,提问作者joshpetit
相关产品推荐
相关产品推荐

