我有一个集合 - 类似于:
注释: {评论,所有者,匿名}
文件可能是:
{ 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)}}
答案 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' } }
}
}
]);