我有一个看似这样的交易模型:
{
anonymous : { type: Boolean, required: true, default: false },
name : { type: String, required: true }
}
无论用户是否选择匿名,我都会存储该名称。但是,当anonymous设置为true时,我想在find()上排除名称字段。即使程序需要知道匿名用户的名字,也没有其他用户能够看到它。有没有办法用mongo查询执行此操作?我查看了$ cond运算符,但它似乎不适用于这种情况。我想说“如果匿名是真的,不要包括名字”。
答案 0 :(得分:1)
以下是mongo命令行的外观。我能找到的最简单的解决方案是使用$cond with the aggregate method:
db.trades.aggregate([
{ $project: {
anonymous: 1,
name: { $cond: [ "$anonymous", "", "$name" ] }
}}
])