流星的聚合。 Mongo db

时间:2016-03-20 10:39:10

标签: mongodb meteor aggregation-framework

我在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()从mongo控制台获取。

我想要返回集合,其中来自当前所有者的任务将首先出现。

例如。如果我以AngryRoot身份登录,我想先显示AngryRoot的任务,然后再显示其他用户的其他任务。我想我需要使用聚合。已安装此软件包:meteorhacks:aggregate

我的所有尝试都失败了,如果可以,请帮助我。 还有一个我需要汇总的文件:enter link description here(11 on raw)。

感谢您花时间陪我

1 个答案:

答案 0 :(得分:0)

我没有掌控流星,但你可以通过聚合管道中的几个阶段拼接使用聚合框架。

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

这应该打印记录(假设AngryRoot是当前用户)

{ 
    "_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
}
相关问题