2010-11-09 48 views
3

我是新來的MongoDB和我遇到讓我的點號查詢工作的麻煩......MongoDB的點號查詢

我使用pymongo與遠程Amazon EC2實例上運行的MongoDB ..

不是寫大量的XML解析代碼來提取大量不同的數據,而是將XML轉換爲JSON,將所有內容轉儲到MongoDB中,然後嘗試使用點符號查詢提取我想要的數據片段。

將數據轉換爲JSON並插入到Mongo中。我可以看到所有的插件(從Python殼)的...

的項目在db.feed.find(): 項目

這裏是返回的一個例子項目...

{u'timestamp': datetime.datetime(2010, 11, 8, 20, 19, 55, 87000), u'message': u'{"category": {"text": "Scores"}, "XML_File_ID": {"text": "12292403"}, "game": {"status": {"text": "4 Qtr", "attrib": {"numeral": "4", "type": "P"}}, "time_r": {"text": "10:01"}, "vscore": {"text": "27"}, "vteam": {"text": "Pittsburgh", "attrib": {"id": "082"}}, "hteam": {"text": "Cincinnati", "attrib": {"id": "064"}}, "hscore": {"text": "14"}}, "seasontype": {"text": "Regular"}, "schedule_id": {"text": "3151"}, "location": {"city": {"text": "Pittsburgh"}, "state": {"text": "PA"}, "country": {"text": "USA"}}, "time_stamp": {"text": " November 8, 2010, at 11:19 PM ET "}, "game_id": {"text": "3151"}, "sport": {"text": "NFL"}, "heading": {"text": "BC-ABP+082:064* 27 14 4R10:01"}}', u'_id': ObjectId('4cd8cbebe8b5d58527000016')} 

所以我試圖做這樣的查詢,但我沒有得到任何結果...

db.feed.find_one({「message.category.text」:「成績」 })

執行這些類型的查詢並將整個文檔恢復到響應中的正確方法是什麼?謝謝!

回答

0

我已經測試了這些查詢,都來自MongoDB shell並使用pymongo,它們適用於我。你忘了將結果保存到變量和/或打印它們嗎?

+0

謝謝查爾斯,我發現了主要問題,只是試點錯誤。當插入消息數據(從xml轉換爲json)時,雙引號字符留在json「消息」對象周圍,將其呈現爲純文本而不是json對象。在python方面,我只是做一個eval(jsonString)來擺脫插入的雙引號... – barl3yb3ar 2010-11-09 23:54:05

+0

我注意到的另一件事是我的點符號查詢必須從頂部的完全限定文件。例如,我希望搜索{「game_id.text」:「3151」},但我需要使用{「message.game.game_id.text」:「3151」}從json文檔的頂部進行搜索 – barl3yb3ar 2010-11-09 23:57:16

0

我建議尋找$ elemmatch,如果你正在仔細查詢子查詢的查詢很多。

「使用$ elemMatch查詢運算符(mongod> = 1.3.1),可以匹配數組中的整個文檔。」

這裏更多:official docs &一個blog post ...

0

你插入的JSON對象有(U')。這是問題,XML到JSON的轉換是不正確的。

u'message:u'{category:{text:"scores"}