如何检查数组中的最后一个元素是否与条件mongodb匹配

时间:2017-04-02 04:34:09

标签: arrays mongodb mongoose

我有一组样本,如下所示:

            camera.pitch = 85.0
            camera.altitude = 223.0
            camera.heading = 31.2

            self.mapView.isPitchEnabled = true;
            self.mapView.showsBuildings = true;

首先,我想通过correlativeCode找到一个Sample(很容易)但是......然后 我需要获取sampleStatus的最后一个元素,并检查sampleStatus数组的用户字段是否等于表达式(另一个用户)。

sampleStatus数组的长度是可变的。

我尝试过$ slice命令,但它没有正常工作。

例如,

如果我找到带相关码的样本" CSLLPA53E20M017W"最后一个sampleStatus.user是user1,它应该获取0条记录。

但如果我找到一个带相关代码的样本" CSLLPA53E20M017W"最后一个sampleStatus.user是user5,它应该获取1条记录。

请帮助我,我被困住了。

1 个答案:

答案 0 :(得分:0)

您可以使用聚合框架

执行此操作
db.collection.aggregate([
    { "$match": { "correlativeCode": "CSLLPA53E20M017W" } },
    { "$redact": { 
        "$cond": [
            { "$eq": [ 
                { "$let": {
                    "vars": { 
                        "item": { "$arrayElemAt": [ "$sampleStatus", -1 ] }
                    },
                    "in": "$$item.user"
                } },
                "user5"
            ] },
            "$$KEEP",
            "$$PRUNE"
        ]
    }}
])