mongodb - 如何使用 mongodb 查询将 DB 中的元素与存储在同一集合中的数组中的另一个元素进行比较
问题描述
这是我的问题。
这是我的样本记录
{
"_id" : ObjectId("5d9b69fae4757402b4b4ca0d"),
"status_changed_utc" : [
{
"status" : NumberInt(1),
"time" : ISODate("2019-05-20T23:03:10.000+0000")
},
{
"status" : NumberInt(2),
"time" : ISODate("2019-05-23T23:04:03.000+0000")
},
{
"status" : NumberInt(4),
"time" : ISODate("2019-05-23T23:05:06.000+0000")
},
{
"status" : NumberInt(5),
"time" : ISODate("2019-05-23T23:05:07.000+0000")
},
{
"status" : NumberInt(6),
"time" : ISODate("2019-05-23T23:05:09.000+0000")
}
],
"requested_completion_utc" : ISODate("2019-05-22T23:05:09.000+0000")
},
{
"_id" : ObjectId("5d9b69fae4757402b4b4ca1e"),
"status_changed_utc" : [
{
"status" : NumberInt(1),
"time" : ISODate("2019-06-20T23:03:10.000+0000")
},
{
"status" : NumberInt(2),
"time" : ISODate("2019-07-23T23:04:03.000+0000")
},
{
"status" : NumberInt(4),
"time" : ISODate("2019-07-23T23:05:06.000+0000")
},
{
"status" : NumberInt(5),
"time" : ISODate("2019-05-23T23:05:07.000+0000")
},
{
"status" : NumberInt(6),
"time" : ISODate("2019-07-23T23:05:09.000+0000")
}
],
"requested_completion_utc" : ISODate("2019-08-22T23:05:09.000+0000")
},
当“status_changed_utc.status”为 NumberInt(2) 时,我希望找出“requested_completion_utc”字段的日期大于“status_changed_utc”字段的日期的记录。
在这个例子中,我希望得到第二条记录。
除了 $unwind 函数,还有其他方法可以处理这个问题吗?
谢谢
解决方案
如果NumberInt(2)
总是在数组的第二个位置。这应该很容易。
db.whatever.find({ $expr: { $gt: [ "$requested_completion_utc" , "$status_changed_utc.1" ] } })
推荐阅读
- github - 无法从 macs 终端添加提交和推送代码到 github
- node.js - 我无法安装请求
- python - removing an IndexError on python
- php - PHP 缩小或转换 PDF 以进行实时预览
- visual-studio - 适用于 Unity 的 Visual Studio 2019 社区(脱机)安装失败
- php - 尽管使用命名空间,但使用 make:entity 在控制器中无法识别的实体类
- django - Django 酥脆形式的更改位于生产服务器上
- google-maps - 如何在谷歌地图上绘图
- swift - 在 Swift 中的网格中查找总和的更好方法
- google-analytics - Google Analytics 中的用户数量似乎很奇怪