2016-03-20 15 views
-1

Ich habe diese Daten in meinem Mongo db:Aggregation in Meteor. Mongo db

{ "_id" : "uhNTGacKPbnykv99S", "text" : "Task1", "createdAt" : ISODate("2016-03-20T10:29:59.669Z"), "owner" : "RE349TrQXoBm32mbr", "username" : "AngryRoot", "private" : false, "checked" : false } 
{ "_id" : "PsX7ZvyDoD26Kr78X", "text" : "Task2", "createdAt" : ISODate("2016-03-20T10:30:01.598Z"), "owner" : "RE349TrQXoBm32mbr", "username" : "AngryRoot", "private" : false, "checked" : false } 
{ "_id" : "mXpPWJ93GjugNCyME", "text" : "Task3", "createdAt" : ISODate("2016-03-20T10:30:15.899Z"), "owner" : "FbcQxF9q5a3t3LG9i", "username" : "CandyOgre", "private" : false, "checked" : false } 
{ "_id" : "WciNvRpZNAeiHNGhz", "text" : "Task4", "createdAt" : ISODate("2016-03-20T10:30:18.785Z"), "owner" : "FbcQxF9q5a3t3LG9i", "username" : "CandyOgre", "private" : false, "checked" : false } 

Holen Sie es von Mongo Konsole mit db.tasks.find().

Ich möchte die Sammlung zurückgeben, wo Aufgaben vom aktuellen Besitzer zuerst kommen werden.

Zum Beispiel. Wenn ich mich als AngryRoot angemeldet habe, möchte ich zuerst die Aufgaben von AngryRoot und dann andere Aufgaben von anderen Benutzern anzeigen. Ich denke, ich brauche Aggregation. Dieses Paket wurde installiert: meteorhacks:aggregate.

Alle meine Versuche fehlgeschlagen, hilf mir, wenn du kannst. Und eine Datei, wo ich aggregieren muss: enter link description here (Am 11 rohen).

Vielen Dank für mich Zeit verbringen

Antwort

0

Ich habe keinen Befehl über Meteor, aber Sie können dies mit Aggregation Rahmen auf jeden Fall tun, indem paar Stufen in Aggregation Pipeline näht.

db.tasks.aggregate([ 
    // project a field showing if current user is owner 
    {$project: 
     {text:1, createdAt:1, owner:1, username:1, private:1, checked:1, current: 
     {$eq: ["$username", "AngryRoot"]} 
     } 
    }, 
    // Sort stage: Brings documents on top with current = true 
    {$sort: 
     {current:-1} 
    }, 
    // Optional!. Remove field name 'current' induced in first stage 
    {$project: 
     {text:1, createdAt:1, owner:1, username:1, private:1, checked:1} 
    } 
]) 

Dies sollte Aufzeichnungen drucken (unter der Annahme AngryRoot ist aktuelle Benutzer)

{ 
    "_id" : "uhNTGacKPbnykv99S", 
    "text" : "Task1", 
    "createdAt" : ISODate("2016-03-20T10:29:59.669+0000"), 
    "owner" : "RE349TrQXoBm32mbr", 
    "username" : "AngryRoot", 
    "private" : false, 
    "checked" : false 
} 
{ 
    "_id" : "PsX7ZvyDoD26Kr78X", 
    "text" : "Task2", 
    "createdAt" : ISODate("2016-03-20T10:30:01.598+0000"), 
    "owner" : "RE349TrQXoBm32mbr", 
    "username" : "AngryRoot", 
    "private" : false, 
    "checked" : false 
} 
{ 
    "_id" : "mXpPWJ93GjugNCyME", 
    "text" : "Task3", 
    "createdAt" : ISODate("2016-03-20T10:30:15.899+0000"), 
    "owner" : "FbcQxF9q5a3t3LG9i", 
    "username" : "CandyOgre", 
    "private" : false, 
    "checked" : false 
} 
{ 
    "_id" : "WciNvRpZNAeiHNGhz", 
    "text" : "Task4", 
    "createdAt" : ISODate("2016-03-20T10:30:18.785+0000"), 
    "owner" : "FbcQxF9q5a3t3LG9i", 
    "username" : "CandyOgre", 
    "private" : false, 
    "checked" : false 
} 
+0

Aber wie es besser in Meteor zu organisieren? Ich kann Meteorhacks verwenden: Aggregat-Paket, aber ich kann es nur auf dem Server verwenden. Soll ich dafür eine neue Methode erstellen oder wie? –

+0

@ МаксимРоманюк Leider weiß ich nichts über Meteor, kann also nichts vorschlagen. Aber ich denke, eine separate Methode zum Umhüllen von Aggregaten ist keine schlechte Idee. – Saleem