首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB distinct与grouping

MongoDB distinct与grouping
EN

Stack Overflow用户
提问于 2021-08-11 20:09:49
回答 1查看 22关注 0票数 0

我在mongo的世界里是个全新的人。到了我不能正确表达我的问题的程度。但是现在开始了..。所以这是我最好的尝试。

代码语言:javascript
复制
db.t2.insertOne( { animal: "cat", action: "meow"});
db.t2.insertOne( { animal: "cat", action: "stalk"});
db.t2.insertOne( { animal: "cat", action: "claw"});
db.t2.insertOne( { animal: "dog", action: "woof"});
db.t2.insertOne( { animal: "dog", action: "beg"});
db.t2.insertOne( { animal: "fish", action: "swim"});

数据相当平坦,对吧?

代码语言:javascript
复制
db.t2.find();
{ _id: ObjectId("61142a398f4cfec27b46e89d"),
  animal: 'cat',
  action: 'meow' }
{ _id: ObjectId("61142a438f4cfec27b46e89e"),
  animal: 'cat',
  action: 'stalk' }
{ _id: ObjectId("61142a4a8f4cfec27b46e89f"),
  animal: 'cat',
  action: 'claw' }
{ _id: ObjectId("61142a7e8f4cfec27b46e8a0"),
  animal: 'dog',
  action: 'woof' }
{ _id: ObjectId("61142a838f4cfec27b46e8a1"),
  animal: 'dog',
  action: 'beg' }
{ _id: ObjectId("61142a918f4cfec27b46e8a2"),
  animal: 'fish',
  action: 'swim' }

我正在寻找一种方法来查询更压缩的数据。就像..。

代码语言:javascript
复制
[{
"animal":"cat",
"action":["meow", "stalk", "claw"]
},
"animal":"dog",
"action":["woof", "beg"]
},
"animal":"fish",
"action":["swim"]
}]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-11 20:29:58

您可以对它们进行分组

代码语言:javascript
复制
db.collection.aggregate([
  {
    "$group": {
      "_id": "$animal",
      "actions": {
        "$push": "$action"
      }
    }
  },
  {
    "$project": {
      "_id": 0,
      "animal": "$_id",
      "actions": 1
    }
  }
])

Run code here

如果您希望将数据保存在新表单中,您可以执行上述操作,然后使用$out stage创建一个具有新模式的新集合。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68748394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档