2012-01-23 26 views
0

我想我會利用DataMapper存儲JSON對象的能力來保持我的表格的美觀和修剪,但文檔沒有闡明如何去查詢JSON值。我存儲的得分一場籃球比賽,像這樣:如何使用DataMapper查詢JSON編碼列的內容?

{"NJN":[15,20,27,23,85],"CLE":[17,17,28,29,91]} 

目前,尋找遊戲中,克里夫蘭騎士隊出場,我這樣做:

Game.all.reject { |g| !g.scores['CLE'] } 

這是非常緩慢而低效。 Game.all(:scores['CLE'])會拋出一個NoMethodError,那麼正確的語法是什麼?

回答

2

它並不打算在JSON上進行搜索。能夠將JSON保存在數據庫中非常有用,但如果需要在數據庫上進行搜索,則需要重新考慮模式。 DataMapper不是一個好的數據庫設計的靈丹妙藥;)

假設你使用JSON的原因很簡單,你應該將JSON編碼的數據移動到一個單獨的模型並使用關聯進行映射。您可以編寫遷移以將您當前存儲的記錄轉換爲新格式。

0

搜索包含字符串「CLE」中的得分列行應該工作:

Game.all :scores.like => "%CLE%" 

如果你會做很多查詢這些信息,你應該考慮使用規範化的數據庫架構以提高性能。