猫鼬隐藏/显示基于另一个字段值的字段

Mongoose hide/show field based on another field value

本文关键字:字段 另一个 隐藏 显示      更新时间:2023-09-26

我有一个交易模型,如下所示:

{
  anonymous : { type: Boolean, required: true, default: false },
  name : { type: String, required: true }
}

无论用户是否选择匿名,我总是存储名称。但是,当匿名设置为 true 时,我想排除 find() 上的名称字段。即使程序需要知道匿名用户的名称,其他用户也不应该能够看到它。有没有办法用 mongo 查询来做到这一点?我看了看$cond运算符,但它似乎不适用于这种情况。我想说"如果匿名是真的,请不要包括名字"。

这是它在 mongo 命令行上的外观。我能找到的最简单的解决方案是将$cond与聚合方法一起使用:

db.trades.aggregate([
  { $project: {
    anonymous: 1,
    name: { $cond: [ "$anonymous", "", "$name" ] }
  }}
])