2016-03-20 17 views
-1

Bu benim Mongo db veri var:Aggregation. 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 } 

db.tasks.find() ile Mongo konsolundan alın.

Koleksiyona geri dönmek istiyorum, geçerli sahiplerden gelen görevler ilk önce gelir. Örneğin,

. AngryRoot olarak giriş yaptım, önce AngryRoot'un görevlerini ve ardından diğer kullanıcılardan gelen diğer görevleri göstermek istiyorum. Bence toplama kullanmam gerek. Bu paket kurulu: meteorhacks:aggregate.

Tüm denemelerim başarısız oldu, bana yardım edebilir. Ve bir araya getirmem gereken bir dosya: enter link description here (On 11 raw).

bana

cevap

0

Ben meteor üzerinde komut yok için vakit için teşekkür ederiz, ama kesinlikle toplanma boru hattı aşamaların çift dikiş ile bu kullanarak toplama çerçevesini yapabilirsiniz.

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} 
    } 
]) 

Bu kayıtları yazdırmalısınız

{ 
    "_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

Ama nasıl daha iyi meteor organize etmek (AngryRoot geçerli kullanıcı olduğunu varsayarak)? Meteorhacks: agrega paketini kullanabilirim ama sadece sunucuda kullanabilirim. Bunun için nasıl yeni bir yöntem oluşturmalıyım? –

+0

@ МаксимРоманюк maalesef meteor hakkında hiçbir şey bilmiyorum bu yüzden hiçbir şey öneremezsiniz. Ama sanırım toplamı toplamak için ayrı bir yöntem olması kötü bir fikir değil. – Saleem