【问题标题】:MongoDB query $group is returning nullMongoDB 查询 $group 返回 null
【发布时间】:2022-01-03 10:58:01
【问题描述】:

我正在学习 MongoDb 查询,我的要求是计算两个日期之间的平均时间。我编写了一个包含项目和组阶段的 mongoDB 查询。

{
    project: {
        OrderObject:1,
        date:1
    }
},
{
    group: {
       objectId: '$OrderObject.pharmacy.companyName',
        count: {
            $sum: 1
        },
        duration: {
            $avg: {
                $abs: {
                    $divide: [
                        {
                            $subtract: [
                                {
                                    $arrayElemAt: [
                                        '$date',
                                        0
                                    ]
                                },
                                {
                                    $arrayElemAt: [
                                        '$date',
                                        1
                                    ]
                                }
                            ]
                        },
                        60000
                    ]
                }
            }
        },
       
        OrderIDs: {
            $addToSet: '$OrderObject.orderID'
        },
        pharmacyName: {
            $addToSet: '$OrderObject.pharmacy.companyName'
        },
       
    }
}

我得到的输出是

  {
    count: 3,
    duration: 54.53004444444445,
    OrderIDs: [ 'ABCDE', 'EWQSE', 'ERTRE' ],
    pharmacyName: [ 'pharmacy business Name' ],
    objectId: null
  },

有人可以告诉我为什么在这种情况下 objectId 为空,但该值打印在 pharmacyName 字段中。我在解析服务器中使用这个管道作为 query.aggregate(pipeline, {useMasterKey:true})

我的期望是 pharmacyName === objectId

【问题讨论】:

  • 能否提供问题的示例数据文件?

标签: mongodb mongodb-query


【解决方案1】:

您的嵌套元素很可能使用了不同的名称:

OrderObject.name.companyName

但这对于 $group 阶段来说不是问题,因为当 _id 为 null 并且不会给您任何错误时,它会聚合集合中的所有元素(总共 3 个)... 这也很有趣,为什么在您的输出中“pharmacyName”仅显示为“name”? ;)

【讨论】:

  • 嗨,我更改了输出的名称。现在,它们与真实的匹配。我的输出正是我所期望的,但 objectId 为空。我除了那边是pharmacyName。我使用解析服务器作为与 mongoDb 连接的后端。我想解析有问题。
猜你喜欢
  • 2019-09-22
  • 2019-11-02
  • 2019-08-18
  • 1970-01-01
  • 2013-04-28
  • 2019-06-14
  • 2020-01-07
  • 2015-11-12
  • 1970-01-01
相关资源
最近更新 更多