我有一个这样的条目集合:
db.mesh_captors.save({'arduino': 0xCB, 'pin': 14, 'value': 35, 'date': datetime.utcnow()})
db.mesh_captors.save({'arduino': 0xCB, 'pin': 14, 'value': 63, 'date': datetime.utcnow()})
db.mesh_captors.save({'arduino': 0xCB, 'pin': 15, 'value': 126, 'date': datetime.utcnow()})
db.mesh_captors.save({'arduino': 0x7B, 'pin': 14, 'value': 121, 'date': datetime.utcnow()})
我想获得 arduino 的每个引脚的最后一个值。使用 MySQL,我会这样写:
SELECT DISTINCT pin, value
FROM mesh_captors
WHERE arduino = 203
GROUP_BY pin
ORDER BY date DESC
但是使用 MongoDB,我不太确定该怎么做。
我尝试过这样的事情,但它足够好吗?
reducer = Code("""
function (doc, out) {
if(out.date == 0 || out.date < doc.date) {
out.date = doc.date;
out.value = doc.value;
}
}
""")
captors_value = db.mesh_captors.group(key=['pin'], condition={'arduino': int(arduino_id)}, reduce=reducer, initial={'date': 0})
到目前为止,我执行请求的时间超过了 4.5 秒,并且随着条目数量的增加,需要的时间也越来越多。