【问题标题】:Mongodb Groupby Aggregate and addition query togetherMongodb Group By Aggregate和加法查询一起
【发布时间】:2015-03-03 06:41:27
【问题描述】:

我正在处理我之前的问题MongoDB GroupBy

使用聚合函数后,我得到了我想要的,现在我想向聚合函数添加一些查询参数,并且查询应该应用于聚合结果 即例如 entity_id "123" ,有 4 年 val

"2010","2011","2012","2013"

根据最后一个问题应用聚合函数后,得到实体 id 为“123”的“2013”​​,这是绝对正确的。

现在我想添加额外的查询,应该是 - “entity_id “123” AND year “2013”​​ AND “extra_query”。

我尝试使用 $match,但它被视为“entity_id”123 AND Extra 查询。

我的数据库中有 2 个集合

集合 1.

{
"entity_id":123,
"added_by":"a",
},
{
"entity_id":321,
"added_by":"b",
},

和集合 2

{
"entity_id":123,
"year":"2014",
"profit_val":2000,
},
{
"entity_id":123,
"year":"2013",
"profit_val":1000,
},
{
"entity_id":123,
"year":"2012",
"profit_val":500,
},
{
"entity_id":123,
"year":"2011",
"profit_val":100000,
},

所以当我搜索 "profit_val" > 10000 时,我得到的结果为 "entity_id" = 123 ,但是这个结果是错误的,因为我只想用实体的最大年份来查看这个条件。 简而言之,我想按最大年份分组,我已经这样做了,现在给出的答案在这里我只想向这个“分组”结果添加查询。

我希望这会让你明白我在寻找什么。

【问题讨论】:

  • 哇,我只是将那一团文本分成段落以使其可读,但它仍然没有任何意义。你在这里问什么?
  • @NeilLunn 我已经更新了这个问题,希望这能帮助你理解这个问题。
  • 添加的内容不是很清楚。您是说要查找“profit_val”> 10000 且“year”= 2013 的文档吗?看不到这与您提出的最后一个问题有什么关系,或者它在此处如何应用。如果英语不是您的语言,您可能需要其他人的帮助来编写您的问题。我现在真的没有明确说明任何事情。

标签: php mongodb aggregation-framework


【解决方案1】:

我从这个问题中了解到的是你想要这样的东西。

> db.collection2.aggregate([
    {
        $sort: {
            "year": 1
        }
    },
    {
        $group: {
            _id: "$entity_id",
            year: {
                $max: "$year"
            },
            profit_val: {
                $last: "$profit_val"
            }
        }
    },
    {
        $match: {
            "profit_val": {
                "$gt": 10000
            }
        }
    }
])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 2019-01-21
    相关资源
    最近更新 更多