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

时间:2014-12-15 04:22:13

标签: javascript mongodb mongoose

我有一个看似这样的交易模型:

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

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

1 个答案:

答案 0 :(得分:1)

以下是mongo命令行的外观。我能找到的最简单的解决方案是使用$cond with the aggregate method

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