我有条目的这样一个集合:不同的组通过使用MongoDB的具有pymongo
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秒来执行请求,并且随着条目数量的增长,它需要越来越多的时间。
。很混乱?请简化 – Rishabh
好吧,我没有重新考虑我的问题 – Natim
你有没有在'pin'上定义一个索引,'arduino' – Rishabh