MongoDB按最接近的时间戳加入

时间:2019-02-20 01:51:23

标签: mongodb timestamp bson

由于主要使用PostgreSQL,所以我是MongoDB的新手,并且无法以所需的JSON格式构造复杂的查询(在SQL中,我将使用CTE)。为了提供简化的示例-许多汽车具有自己的唯一标识符vin。保留的车会发出砰的声响,没有保留的车会发出声。

我的收藏集engine中有一些结构如下的对象:

{
    "_id" : ObjectId("1"),
    "vin" : "12345",
    "class_name" : "foo",
    "decoded_payload" : {
        "timestamp" : 1547329250,
        "status" : "LOCKED"
    }
}
{
    "_id" : ObjectId("2"),
    "vin" : "12345",
    "class_name" : "foo",
    "decoded_payload" : {
        "timestamp" : 1547329260,
        "status" : "LOCKED"
    }
}
{
    "_id" : ObjectId("3"),
    "vin" : "12345",
    "class_name" : "bar",
    "decoded_payload" : {
        "timestamp" : 1547329270,
        "status" : "UNLOCKED",
        "reservation_id" : "71"

    }
}
{
    "_id" : ObjectId("4"),
    "vin" : "12345",
    "class_name" : "baz",
    "decoded_payload" : {
        "timestamp" : 1547329280,
        "status" : "UNLOCKED",
        "reservation_id" : "71"

    }
}    
{
    "_id" : ObjectId("5"),
    "vin" : "12345",
    "class_name" : "foo",
    "decoded_payload" : {
        "timestamp" : 1547329290,
        "status" : "NO SIGNAL"

    }
}
{
    "_id" : ObjectId("6"),
    "vin" : "12345",
    "class_name" : "foo",
    "decoded_payload" : {
        "timestamp" : 1547329300,
        "status" : "LOCKED"

    }
}

在保留之外产生的记录始终属于foo类(那些在 保留期间可以变化,但从不foo

我只对在每个vin上的每个保留之前和之后立即获取status感兴趣。可以通过将类foo与最接近的时间戳记reservation_idvin进行最接近的记录来检索,因为我的目标是检索每个{{在每个reservation_id

上创建1}}

以上示例的输出类似于

vin

两个保留有可能背对背-在单个{"vin": "1234", "reservation_id": "71", "pre_status": "LOCKED", "post_status": "NO SIGNAL"}上的保留之间没有“ foo”类-这些情况我想完全忽略。

到目前为止,我本人有保留意见,但是希望您对进一步进行操作提出任何建议-在上述情况下使用vin语句是否合适?

forEach

0 个答案:

没有答案