我有條目的這樣一個集合:不同的組通過使用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