我有一个字段订阅者的主题。该字段是一个数组,包含所有订户ID。
当用户进行查询以获取所有主题时,我想为每个主题添加一个标记,如果用户已经订阅了该主题。
topic.aggregate([
{"$match" : { "subscribers" : new mongoose.Types.ObjectId(myUserId) }},
])
如果我执行此查询,我只会获得用户订阅的主题,但我需要获取所有主题!!
topic.aggregate([
{$project: {
"_id":1,
"title":1,
"subscribe":{ "subscribers" : new mongoose.Types.ObjectId(myUserId) }
}
]}
这种聚合不起作用。我怎样才能完成这项任务?
答案 0 :(得分:1)
试试这个
db.topic.aggregate([
{ $project :
{
"_id" : 1,
"title" : 1,
"subscribed" : { $cond : [ { $setIsSubset : [ [new ObjectId(myUserId)], "$subscribers"] }, true, false ] }
}
}
])