mongodb-如何在结果嵌入式文档中分组不同的字段

发布于 2025-02-04 13:22:44 字数 625 浏览 4 评论 0原文

我有一个文档,我想通过某些特定字段进行分组,对于不包含在GroupBy中的其余字段,我想将它们包括在嵌入式数组中。

一个示例,假设我有以下数据,

[
{"owner": "A", "pet": "dog", "pet_name": "wouf"},
{"owner": "A", "pet": "cat", "pet_name": "miaou"},
{"owner": "B", "pet": "dog", "pet_name": "wouf_wouf"},
]

我想通过字段所有者和剩下的字段pet pet_name ,我想将它们分组为名为动物的数组。

预期结果:

[
{
    "owner": "A",
    "animals": [
        {"pet": "dog", "pet_name": "wouf"},
        {"pet": "cat", "pet_name": "miaou"},
    ],
},
{ 
    "owner": "B",
    "animals": [{"pet": "dog", "pet_name": "wouf_wouf"}]
},
]

I have a document that I want to group by some specific fields, and for the remaining fields that are not included in the groupby, I want to include them in an embedded array.

An example, let's say that I have the following data

[
{"owner": "A", "pet": "dog", "pet_name": "wouf"},
{"owner": "A", "pet": "cat", "pet_name": "miaou"},
{"owner": "B", "pet": "dog", "pet_name": "wouf_wouf"},
]

I want to group this data by the field owner and the remaining fields pet and pet_name, I want to group them in an array named animals.

Expected result:

[
{
    "owner": "A",
    "animals": [
        {"pet": "dog", "pet_name": "wouf"},
        {"pet": "cat", "pet_name": "miaou"},
    ],
},
{ 
    "owner": "B",
    "animals": [{"pet": "dog", "pet_name": "wouf_wouf"}]
},
]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

極樂鬼 2025-02-11 13:22:44

查询

  • 组由$所有者$ push
  • 我们没有操作员从文档中删除字段(删除所有者),因此使用文字文档来保留只有pet/pet_name
  • 最后重命名_id 所有者 并删除_id

playmongo

aggregate(
[{"$group": 
   {"_id": "$owner",
    "animals": {"$push": {"pet": "$pet", "pet_name": "$pet_name"}}}},
 {"$set": {"owner": "$_id", "_id": "$REMOVE"}}])

Query

  • group by $owner, and $push
  • we dont have an operator to remove a field from a document(remove the owner), so a literal document is used, to keep only the pet/pet_name
  • finally rename _id to owner and remove the _id

Playmongo

aggregate(
[{"$group": 
   {"_id": "$owner",
    "animals": {"$push": {"pet": "$pet", "pet_name": "$pet_name"}}}},
 {"$set": {"owner": "$_id", "_id": "$REMOVE"}}])
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文