根据MongoDB中的另一个字段选择性地返回一个字段

时间:2017-01-04 11:53:08

标签: mongodb meteor

我有一个集合 - 类似于:

注释: {评论,所有者,匿名}

文件可能是:

{ comment "comment1", owner: "Frazer Kirkman", anonymous: false }, 
{ comment "comment2", owner: "Frazer Kirkman", anonymous: true }, 
{ comment "comment3", owner: "HoefMeistert", anonymous: true }.

如果匿名为false,或者用户是所有者,我希望始终发布评论并仅发布所有者。

所以上面会为Frazer返回这个:

{ comment "comment1", owner: "Frazer Kirkman"}, 
{ comment "comment2", owner: "Frazer Kirkman"}, 
{ comment "comment3"}.

这对于Hoef:

{ comment "comment1", owner: "Frazer Kirkman"}, 
{ comment "comment2"},
{ comment "comment3", owner: "HoefMeistert"}.

类似的东西:

Comments.find({},{'comment':1, 'owner':(anonymous || owner==thisUser)}}

2 个答案:

答案 0 :(得分:1)

您可以创建一个聚合,根据匿名位填充所有者名称。您可以使用$cond条件语句执行此操作。

当您提供更多信息时,我可以帮助您完成声明。但是请提供演示文档。

答案 1 :(得分:0)

以下是HoefMeistert建议的一个例子

Comments.aggregate([
    {},   // match all entries
    { $project: { "comment":true, 'owner':  { $cond: {  
          if: {$and:[{$eq: ["$anonymous",true]},
                     {$ne: ['$owner',this.userId]}
                    ] }, 
          then: '', else: '$owner'          }        } 
                 }
    }
]);