我有一组样本,如下所示:
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条记录。
请帮助我,我被困住了。
答案 0 :(得分:0)
您可以使用聚合框架
执行此操作db.collection.aggregate([
{ "$match": { "correlativeCode": "CSLLPA53E20M017W" } },
{ "$redact": {
"$cond": [
{ "$eq": [
{ "$let": {
"vars": {
"item": { "$arrayElemAt": [ "$sampleStatus", -1 ] }
},
"in": "$$item.user"
} },
"user5"
] },
"$$KEEP",
"$$PRUNE"
]
}}
])