如何在mongodb组?

时间:2016-03-15 11:01:46

标签: mongodb nosql

我收藏了这样的文件:

{ "_id" : ObjectId("56e17f2db292c9151a8b459b"), "title" : "test title", "category" : "test category", "pubDate" : "1457599100", "code" : "ZZZ" },
{ "_id" : ObjectId("56e17f2db292c9151a8b459b"), "title" : "test 2 title", "category" : "test 2 category", "pubDate" : "1457599200", "code" : "ZZZ" }

如何使分组得到如下输出:

{
  "ZZZ": {
    "items": {
      0: { "_id" : ObjectId("56e17f2db292c9151a8b459b"), "title" : "test title", "category" : "test category", "pubDate" : "1457599100"},
      1: { "_id" : ObjectId("56e17f2db292c9151a8b459b"), "title" : "test 2 title", "category" : "test 2 category", "pubDate" : "1457599100"}
    }
  }
}

1 个答案:

答案 0 :(得分:1)

这应该会让你与你想要的相似:

db.collection.aggregate([{ $group : { _id : "$code", items: { $push: "$$ROOT" } } }])

它将返回:

{
  "_id" : "ZZZ",
  "items" :
     [
       { "_id" : ObjectId("56e17f2db292c9151a8b459b"), "title" : "test title", "category" : "test category", "pubDate" : "1457599100", "code" : "ZZZ" },
       { "_id" : ObjectId("56e17f2db292c9151a8b459b"), "title" : "test 2 title", "category" : "test 2 category", "pubDate" : "1457599200", "code" : "ZZZ" }
     ]
}

可以找到文档under $group aggregation