当前位置: 首页 > 知识库问答 >
问题:

从聚合中重新格式化MongoDB结果

郗福
2023-03-14

我来自SQL世界,从MongoDB开始,我仍然有点困惑。。。我有一个这样的收藏

{
    "_id" : ObjectId("5769b51f675e6190119935ec"),
    "city" : "City1",
    "company" : "Company1",
    "country" : "Country1",
    "zip" : "23345",
},{
    "_id" : ObjectId("5769b51f675e6190119935ed"),
    "city" : "City1",
    "company" : "Company2",
    "country" : "Country1",
    "zip" : "1245",
},{
    "_id" : ObjectId("5769b51f675e6190119935ee"),
    "city" : "City2",
    "company" : "Company1",
    "country" : "Country1",
    "zip" : "123445",
},{
    "_id" : ObjectId("5769b51f675e6190119935ef"),
    "city" : "City1",
    "company" : "Company2",
    "country" : "Country1",
    "zip" : "1235445",
}

还有我的问题,

db.getCollection('stores').aggregate([{"$group":{"_id" : {city :"$city", company : "$company"}}}])

我正在使用角和NodejS Express从数据库中获取数据,我以这种格式获取数据

[
    {
        _id:{
            city:"City1",
            company:"Compnay1"
        }
    },
    {
        _id:{
            city:"City1",
            company:"Company2"
        }
    },
    {
        _id:{
            city:"City2",
            company:"Compan1"
        }
    }
]

因此,我想知道是否有一种方法可以在没有id键的情况下获得此查询结果,

像这样:

 [
        {
            city:"City1",
            company:"Compnay1"
        },
        {
            city:"City1",
            company:"Company2"
        },
        {
            city:"City2",
            company:"Compan1"
        }
 ]

共有1个答案

林英武
2023-03-14

只需在下一个管道阶段使用$project作为聚合管道运算符:

db.getCollection('stores').aggregate([
  {"$group":{"_id" : {city :"$city", company : "$company"}}},
  {"$project": {"city": "$_id.city", "company": "$_id.company", "_id": 0}}
])
 类似资料:
  • 问题内容: 如何对熊猫的groupby运算的输出进行格式修改,从而产生非常大的科学计数法? 我知道如何在python中进行字符串格式化,但是在这里应用它时我很茫然。 如果我转换为字符串,这会抑制科学计数法,但是现在我只是想知道如何设置字符串格式并添加小数。 问题答案: 当然,我在评论中链接的答案不是很有帮助。你可以像这样指定自己的字符串转换器。 我不确定这是否是首选的方法,但是可以。 仅出于美学目

  • 问题内容: 在Mongodb中,我以ISODate格式存储日期和时间。 看起来像这样 使用nodejs / javascript,如何显示时间成分,这样我会得到类似的信息 我正在使用momentjs简化此操作,但是据我所知,momentjs似乎支持ISODate格式。 感谢您的帮助。 问题答案: JavaScript的Date对象支持ISO日期格式,因此,只要您有权访问日期字符串,就可以执行以下操

  • 问题内容: 如何对pandas的groupby运算输出的格式进行修改,从而产生大量的科学计数法? 我知道如何在python中进行字符串格式化,但是在这里应用它时我很茫然。 如果我转换为字符串,这会抑制科学计数法,但是现在我只是想知道如何设置字符串格式并添加小数。 问题答案: 当然,我在评论中链接的答案不是很有帮助。您可以像这样指定自己的字符串转换器。 我不确定这是否是首选的方法,但是可以。 仅出于

  • 如何修改大熊猫中产生非常大数字的科学符号的组比操作输出的格式? 我知道如何在python中进行字符串格式设置,但在这里应用它时,我不知所措。 如果我转换成字符串,这会抑制科学记数法,但现在我想知道如何设置字符串格式和添加小数。

  • 本文向大家介绍MongoDB聚合分组多个结果,包括了MongoDB聚合分组多个结果的使用技巧和注意事项,需要的朋友参考一下 要聚合多个结果,请在MongoDB中使用$group。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是汇总组多个结果的查询- 这将产生以下输出-

  • 我不熟悉Spring和Mongo。我正在使用Spring Batch获取一些报告。我的查询需要一些MongoItemReader不支持的聚合,所以我根据下面的stackoverflow链接扩展了该类。 如何在Spring批处理中使用MongoItemReader聚合查询 但我的聚合有点问题。我制作的聚合在mongoDB中运行良好,但无法将其转换为Spring mongo聚合。 MongoDb聚合按