我是新來的MongoDB,並有一個表BOXTABLE像下面查詢 - 選擇框,COUNT(*)from表where GROUP BY
boxname
time_created
box_data
基本上我們會記錄該箱發送什麼數據和在什麼時間。假設表中有如下數據,現在意味着當前時間:
BoxA,Now,'AAA'
BoxB,Now,'AAA'
BoxC,Now,'AAA'
BoxA,Now,'AAA'
BoxA,Now,'AAA'
BoxB,Now,'AAA'
BoxA,Now,'AAA'
BoxC,Now,'AAA'
BoxA,Now,'AAA'
BoxB,Now,'AAA'
所以我需要得到的數據是這樣的:
BoxA - 5
BoxB - 3
BoxC - 2
現在,我的要求是,是,如果在系統中創建一個警報方框發送的請求超過閾值,可能表明該方框中可能存在某些錯誤或可疑內容。假設當前閾值是4所以我應該得到的警報BOXA:
這樣我的要求是執行一個查詢是這樣的:
SELECT BOXNAME,COUNT(BOX_DATA) FROM BOXTABLE WHERE time_create >= now and time_create < now + 600
我試過相同,但ñ加時賽肯定爲什麼它不工作:
db.collection.aggregate([{"$group" : {"$id" : "$boxname", count:{"$box_data":1}}, time_created: {"$gte":start,"$lt":end}}])
哪裏開始和結束都象下面這樣:
start = int(time.time())
end = start + 600
是我的代碼正確的 - 當我運行我得到以下錯誤
NameError: name 'count' is not defined
感謝它的幫助,但又一個小的幫助 - 如何檢查閾值也意味着我需要列出時間範圍內的數據和記錄(boxnames),其結果中的記錄數超過4根據我的例? – Prakash
@Prakash我相信你的意思是一個「HAVING」條款。然而,在將來,如果您對實際問題有其他問題,請[提出新問題](http://stackoverflow.com/questions/ask)。 –
非常感謝您的幫助 - 它幫助了很多。感謝您提供的指導和細節 - 我會遵循規則 – Prakash