如何转换为ObjectId并在MongoDB查找上匹配日期?

梅西耶

我从架构中的嵌套值中获取一个ID,然后使用该ID从另一个表中查找该ID,并在该表中的几个日期上进行匹配。我尝试了常规的match / lookup / unwind / match以及lookup / let / pipeline技术。在这两种情况下,由于某种原因,它都会忽略日期匹配。我想念什么?

这是一种参考方法。我也不知道该放在哪儿,因为它似乎并没有拉出$ meeting来进行排序。

记录示例

PRODUCT
{ 
"_id" : ObjectId("5f36c0df6d5553e6af208cac"),
"items" : [
    {
        "paramType" : "Meeting", 
        "paramValue" : "5f36c0df6d5553e6af208cab"
    }
], 
"ownerId" : ObjectId("12345678901234567")
}

MEETING
{ 
"_id" : ObjectId("5f36c0df6d5553e6af208cab"), 
"startDate" : ISODate("2020-08-18T10:00:00.000+0000"), 
"endDate" : ISODate("2020-08-18T11:00:00.000+0000")
}

骨料

db.getCollection("products").aggregate(
[
    {
        $match: {
          "ownerId": ObjectId("12345678901234567")
        }
    },
    {
        $unwind: "$items"
    },
    {
        $lookup: {
            from: "meetings",
              let: { "meetingId": '$items.paramValue' },
              pipeline: [
                {
                  $match: {
                    $expr: {
                      $and: [
                        { $eq: ["$_id", "$$meetingId"] },
                        {
                          $eq: ["meeting.startDate", {
                            "$gte": ["$meeting.startDate", ISODate("2020-08-01T00:00:00.000Z")]
                          }]
                        },
                        {
                          $eq: ["meeting.endDate", {
                            "$lte": ["$meeting.endDate", ISODate("2020-08-31T23:59:59.999Z")]
                          }]
                        }
                      ],
                    },
                  },
                },
              ],
            as: "meeting"
        }
    },
    {
        $unwind: "$meeting"
    },
    {
        $project: {
            "_id": 1,
            "items": 1,
            "meeting": "$meeting"
        }
    },
    {
        $sort: {
            'meeting.startDate': 1
        }
    },

]

);

可能是因为item.paramValue在查找之前未将其转换为ObjectId。但是无法弄清楚如何在聚合中进行转换。我尝试过了,但是没有去

{
$addFields: {
"convertedMeetingId": { $toObjectId: "$items.paramValue" }
}}

let: { "meetingId": "$convertedMeetingId" }
土生的

$lookup其他外观不错的地方可以快速修复

  • let您可以使用以下方式将meetingId字符串转换ObjectId此处$toObjectId
  • $gte$lte,您曾经使用过$meeting.startDate$meeting.endDate它应该是$startDate$endDate因为您已经在内部meeting查询中。
  • 我不确定为什么您使用$ eq并与$gte$lte,如果我没有记错,我已经更正并删除了$ eq,它将直接运行。
  {
    $lookup: {
      from: "meetings",
      let: { meetingId: { $toObjectId: "$items.paramValue" } },
      pipeline: [
        {
          $match: {
            $expr: {
              $and: [
                { $eq: ["$_id", "$$meetingId"] },
                { $gte: ["$startDate", ISODate("2020-08-01T00:00:00.000Z")] },
                { $lte: ["$endDate", ISODate("2020-08-31T23:59:59.999Z")] }
              ]
            }
          }
        }
      ],
      as: "meeting"
    }
  },

操场

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过UUID在MongoDB中查找文档(将ObjectId转换为UUID)

来自分类Dev

从字符串转换为MongoDB ObjectID

来自分类Dev

Mongodb:如何查找字段与ObjectId或字符串匹配的文档?

来自分类Dev

如何在mongodb聚合中将毫秒转换为日期?

来自分类Dev

如何将日期从mongodb转换为JavaScript或jQuery?

来自分类Dev

如何将日期从mongodb转换为JavaScript或jQuery?

来自分类Dev

如何匹配两个矩阵的日期并在Matlab中查找后续数据?

来自分类Dev

如何以YYYY-Qx格式查找上一年的匹配值?

来自分类Dev

如何将$ project ObjectId转换为mongodb中的字符串值?

来自分类Dev

如何使用环回和mongodb将嵌套对象中的属性强制转换为ObjectId?

来自分类Dev

如何通过MongoDb Shell将字符串字段转换为对象数组中的ObjectId?

来自分类Dev

如何使用环回和mongodb将嵌套对象中的属性强制转换为ObjectId?

来自分类Dev

如何从时间戳转换为Mongo ObjectID

来自分类Dev

如何在 HIVE 中查找上一个日期

来自分类Dev

如何将字符串转换为日期并在Access查询中提取值

来自分类Dev

如何将“ 12/08/16”转换为日期格式并在VBA中进行比较?

来自分类Dev

MongoDB聚合项目字符串转换为ObjectId

来自分类Dev

从使用对象转换为数组后,如何转换MongoDB查找操作

来自分类Dev

如何将字符串转换为日期并在javascript中为该日期添加一年

来自分类Dev

在Excel 2013中查找上次日期值?

来自分类Dev

查找上次更新者和上次更新日期

来自分类Dev

如何在Node.js MongoDB本机驱动程序中将字符串转换为ObjectId?

来自分类Dev

如何将ObjectId参数添加到mongodb查找

来自分类Dev

在MongoDb聚合查找上,let是否需要特殊格式?

来自分类Dev

在MongoDB中排序后如何查找上一个/下一个文档

来自分类Dev

如何将python字典转换为2D数组并在长度不匹配的地方填充?

来自分类Dev

从字符串转换为日期时间时如何修复 ValueError 时间日期与格式不匹配

来自分类Dev

如何将Mongoose查找查询转换为MongoDB聚合框架?

来自分类Dev

如何使用SQL从MongoDB ObjectId中检索日期

Related 相关文章

  1. 1

    通过UUID在MongoDB中查找文档(将ObjectId转换为UUID)

  2. 2

    从字符串转换为MongoDB ObjectID

  3. 3

    Mongodb:如何查找字段与ObjectId或字符串匹配的文档?

  4. 4

    如何在mongodb聚合中将毫秒转换为日期?

  5. 5

    如何将日期从mongodb转换为JavaScript或jQuery?

  6. 6

    如何将日期从mongodb转换为JavaScript或jQuery?

  7. 7

    如何匹配两个矩阵的日期并在Matlab中查找后续数据?

  8. 8

    如何以YYYY-Qx格式查找上一年的匹配值?

  9. 9

    如何将$ project ObjectId转换为mongodb中的字符串值?

  10. 10

    如何使用环回和mongodb将嵌套对象中的属性强制转换为ObjectId?

  11. 11

    如何通过MongoDb Shell将字符串字段转换为对象数组中的ObjectId?

  12. 12

    如何使用环回和mongodb将嵌套对象中的属性强制转换为ObjectId?

  13. 13

    如何从时间戳转换为Mongo ObjectID

  14. 14

    如何在 HIVE 中查找上一个日期

  15. 15

    如何将字符串转换为日期并在Access查询中提取值

  16. 16

    如何将“ 12/08/16”转换为日期格式并在VBA中进行比较?

  17. 17

    MongoDB聚合项目字符串转换为ObjectId

  18. 18

    从使用对象转换为数组后,如何转换MongoDB查找操作

  19. 19

    如何将字符串转换为日期并在javascript中为该日期添加一年

  20. 20

    在Excel 2013中查找上次日期值?

  21. 21

    查找上次更新者和上次更新日期

  22. 22

    如何在Node.js MongoDB本机驱动程序中将字符串转换为ObjectId?

  23. 23

    如何将ObjectId参数添加到mongodb查找

  24. 24

    在MongoDb聚合查找上,let是否需要特殊格式?

  25. 25

    在MongoDB中排序后如何查找上一个/下一个文档

  26. 26

    如何将python字典转换为2D数组并在长度不匹配的地方填充?

  27. 27

    从字符串转换为日期时间时如何修复 ValueError 时间日期与格式不匹配

  28. 28

    如何将Mongoose查找查询转换为MongoDB聚合框架?

  29. 29

    如何使用SQL从MongoDB ObjectId中检索日期

热门标签

归档