在$ project

时间:2016-05-27 15:02:42

标签: mongodb mongoose mongodb-query

我有一个字段订阅者的主题。该字段是一个数组,包含所有订户ID。

当用户进行查询以获取所有主题时,我想为每个主题添加一个标记,如果用户已经订阅了该主题。

topic.aggregate([
        {"$match" : { "subscribers" :  new mongoose.Types.ObjectId(myUserId) }},
])

如果我执行此查询,我只会获得用户订阅的主题,但我需要获取所有主题!!

topic.aggregate([
  {$project: {
    "_id":1,
    "title":1,
    "subscribe":{ "subscribers" : new mongoose.Types.ObjectId(myUserId) }
  }
]}

这种聚合不起作用。我怎样才能完成这项任务?

1 个答案:

答案 0 :(得分:1)

试试这个

db.topic.aggregate([
    { $project : 
      { 
        "_id" : 1, 
        "title" : 1, 
        "subscribed" : { $cond : [ { $setIsSubset : [ [new ObjectId(myUserId)], "$subscribers"] }, true, false ] } 
      } 
    }
])