2012-05-10 45 views
0

我需要查詢包含在嵌入對象中的數據。問題是嵌入對象具有未知結構。
例子:查詢在嵌入對象中搜索

{"field_1": "val_1", "embedded": {"random1": "someA" }} 
{"field_1": "val_2", "embedded": {"random2": "someB" }} 
{"field_1": "val_3", "embedded": {"random3": "someC" }} 

我需要能夠獲得第二文檔「someB」

任何想法如何,我可以在嵌入式documnet搜索具有未知結構搜索時?

PS爲硬編碼對象我用正則表達式查詢:

{'$regex': '.*%s.*' % search_for} 

回答

3

你打算怎麼查詢未知結構?你可能會採用無模式的方法。

您可能想要自己創建和維護反向索引。也就是說,在單獨的收集存儲文件中,像這樣:

{value: 'someB', stored_in_object:"object id here", path:'embedded.random2'} 

或者,也許全文搜索引擎可以在這裏幫助。

或者你應該重新考慮你的模式。

+0

這是一個帶有用戶定義字段的對象 – kilonet

0

您不能將正則表達式應用於模式字段。您始終必須指定要查詢的文檔/子文檔的完整虛線名稱。否則,您需要將您的資料彙總到可以查詢的知名字段中。但是MongoDB並不是找到我所有可以存儲在我的可怕的垃圾數據模式中的解決方案。