2016-05-27 16 views
1

Ich habe ein Thema mit einem Feld Abonnenten. Dieses Feld ist ein Array und enthält alle Abonnenten-IDs.

Wenn ein Benutzer eine Abfrage erstellt, um alle Themen zu erhalten, möchte ich ein Flag für jedes Thema festlegen, das angibt, ob der Benutzer das Thema bereits abonniert hat oder nicht.

Wenn ich diese Abfrage ausführe, bekomme ich nur das Thema, das der Benutzer abonniert, aber ich muss alle Themen bekommen !!

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

Und diese Aggregation funktioniert nicht. Wie kann ich diese Aufgabe erfüllen?

Antwort

1

Versuchen Sie, diese

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