0

dies ist mein Mungo SchemaMongoDB Aggregation .. Zählen innerhalb eines Arrays auf die Ausgabe von Javascript. mit NodeJS, Mungo

var testSchema = new mongoose.Schema({ 
    name: String, 
    image: String, 
    comments: [ 
     { 
     type: mongoose.Schema.Types.ObjectId, 
     ref: "Comment" 
     } 
    ] 
}); 

so hat jeder Benutzer einen Namen, Bild und Kommentare. Die Kommentare sind Array. im Grunde habe ich 10 Benutzer mit verschiedenen Kommentaren, i, wie viele Kommentare zählen wollen pro Benutzer und zeigt sie auf dem html ..

Ich habe versucht haben dieses

db.users.aggregate({$project: { count: {$size:"$comments"}}}) 

es zählt die Kommentare pro Benutzer all user ... wie kann ich das auf dem html ausgeben? und wie kann ich diesen Befehl nur für 1 Benutzer ausführen? nicht an alle Benutzer ... Danke!

+1

warum nicht so etwas wie '$ db.users.findOne ({_ id: UserSid}) comments.length' –

+0

Wie kann ich den Wert auf Javascript zu bekommen.? so dass ich es auf dem html ausgeben kann ... danke, mein Herr! – John

+0

es funktioniert dank! aber wenn ich diesen Befehl auf der JS ausprobiert habe, gibt es mir einen Fehler, es sagt, dass es die Eigenschaft 'length' nicht lesen kann ... hier ist mein Code 'var countComment = TestData.findOne ({_ id: 'ObjectId (" 57cdf6b3fbccf41198389aca ") '}). comments.length; ' – John

Antwort

0

Um die Anzahl der Kommentare eines einzelnen Benutzers zu ermitteln, verwenden Sie den folgenden Befehl in mongoose.

Users.findOne({_id: ObjectId("57cdf6b3fbccf41198389aca")}, function(err, user) { 
    if(err) { 
     //handle error 
    } else if(!user) { 
     //no user found 
    } else { 
     //user found 
     if(user.comments) { 
      console.log('user comments length', user.comments.length); 
     } else { 
      console.log('no user comments'); 
     } 
    } 
}) 
Verwandte Themen