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

聚合查询返回mongodb所有对象的数组

长孙星汉
2023-03-14

我第一次使用mongo。我正在尝试使用下面的查询聚合集合中的一些文档。相反,查询返回一个具有键“result”的对象,该键包含一个包含符合$match的所有文档的数组。

下面是查询。

db.events_2015_04_10.aggregate([
                {$group:{
                     _id: "$uid",
                     count: {$sum: 1},
                    },
                    $match : {promo:"bc40100abc8d4eb6a0c68f81f4a756c7", evt:"login"}
                }
            ]
        );

以下是集合中的示例文档:

{
    "_id" : ObjectId("552712c3f92ea17426000ace"),
    "product" : "Mobile Safari",
    "venue_id" : NumberLong(71540),
    "uid" : "dd542fea6b4443469ff7bf1f56472eac",
    "ag" : 0,
    "promo" : "bc40100abc8d4eb6a0c68f81f4a756c7",
    "promo_f" : NumberLong(1),
    "brand" : NumberLong(17),
    "venue" : "ovation_2480",
    "lt" : 0,
    "ts" : ISODate("2015-04-10T00:01:07.734Z"),
    "evt" : "login",
    "mac" : "00:00:00:00:00:00",
    "__ns__" : "wifipromo",
    "pvdr" : NumberLong(42),
    "os" : "iPhone",
    "cmpgn" : "fc6de34aef8b4f57af0b8fda98d8c530",
    "ip" : "192.119.43.250",
    "lng" : 0,
    "product_ver" : "8"
}

我正在尝试将所有内容按uid进行分组,每个组的总和。。。实现这一目标的正确方法是什么?

共有1个答案

薛英卫
2023-03-14

请尝试以下聚合框架,该框架首先具有匹配管道阶段,然后是组管道:

db.events_2015_04_10.aggregate([
    {
        $match: {
            promo: "bc40100abc8d4eb6a0c68f81f4a756c7", 
            evt: "login"
        }
    },
    {
        $group: {
            _id: "$uid",
            count: {
                $sum: 1
            }
        }        
    }
])
 类似资料:
  • 我使用Nodejs和MongoDB与expressjs和mongoose库,创建一个具有用户、文章和评论模式的博客API。下面是我使用的模式。

  • 主要内容:aggregate() 方法,管道MongoDB 中的聚合操作用来处理数据并返回计算结果,聚合操作可以将多个文档中的值组合在一起,并可对数据执行各种操作,以返回单个结果,有点类似于 SQL 语句中的 count(*)、group by 等。 aggregate() 方法 您可以使用 MongoDB 中的 aggregate() 方法来执行聚合操作,其语法格式如下: db.collection_name.aggregate(aggr

  • 假设我有一个MongoDB集合,其中包含以下信息: 我想计算按州分组的订单总价的总和,其中项目为“苹果”,颜色为“红色”。我的问题是: 但是,我希望能够将我的结果cust\u id包含在\u id中,它是一个数组/映射/一些结构,其中包含构成我的合计的所有客户id的列表。因此,我希望我的输出包含 是否有办法处理此mongo聚合/查询?或者是一种更好的方式来构造此查询,以便我可以按州分组计算红苹果的

  • 有人能帮我把这个mongoDB聚合转换成Spring数据mongo吗? 我试图在每个邀请函文件中获得未提醒与会者的电子邮件列表。 让它在mongo shell中运行,但需要在Spring data mongo中运行。 我的shell查询 ) 正如你们所看到的,这是我提出的,它在管道的项目和团队运作中并没有像预期的那样发挥作用。下面给出了生成的查询。 聚合对象创建 它创建以下查询 聚合对象生成的查询

  • 在使用Mongoose查询数组时,我很难得到我期望看到的内容。一个用户可以有许多与他/她的帐户相关联的房间。room对象存储在集合中附加到用户的数组中。只有一个集合叫做Users。 请考虑以下user和Room的两个架构: 我还应该指出,数据库是填充的,因为我可以看到RoboMongo中的数组(在创建用户帐户时创建了1个元素)。 正在填充从控制台输出到show database的示例数据(包括us

  • 问题内容: 我在Elasticsearch中有一个小型数据库,出于测试目的,我想拉回所有记录。我正在尝试使用以下形式的网址… 有人可以给我您用来完成此操作的URL吗? 问题答案: 我认为支持lucene语法是这样的: 大小默认为10,因此您可能还需要获取10个以上的商品。(其中BIGNUMBER等于您认为大于数据集的数字) 但是,elasticsearch文档建议使用扫描搜索类型针对大型结果集。