2013-05-03 51 views
0

我正試圖找到讓MongoDb在所有文檔字段中查找特定值的最佳方法。例如,如果我有兩個文件:在任何字段中查找包含搜索字符串的文檔

{ 
    field1: "value1" 
    field2: "value2" 
} 

{ 
    field3: "value3" 
    field4: "value1" 
} 

和查詢字符串「值1」這兩個文件將被退回。

如果在MongoDb中沒有辦法做到這一點,那麼在數據庫或代碼級別實現它的最佳策略是什麼?我嘗試在C#中創建一個getter,它遍歷所有映射實體的屬性,並返回一個數組,並將此數組存儲在數據庫中,但IMO卻是效率低下且難看的解決方案。

+0

[這裏有一個可行的答案(http://stackoverflow.com/a/19802670/825421)從重複的問題(雖然該解決方案可能對你來說太慢)。 – 2013-11-13 18:27:48

回答

1

在MongoDB中沒有辦法直接做到這一點。

擁有無限的字段名稱可能是您的模式需要重新工作的標誌。你有沒有考慮將你的動態字段名稱改爲嵌入對象的值?如:

fields: [{name: "field1", value: "value1"}, {name: "field2", value: "value2"}] 

然後將查詢看起來像:

db.coll.find({'fields.value': 'value1'}); 
+0

在客戶突然要求我進行全場搜索之前,模式沒有問題,所以現在我需要找到一種方法來實現它。我有幾個映射到mongodb集合的c#類,並將其重構爲鍵值對的數組似乎太硬核了:-)我試圖讓我在問題中描述的更輕量級的解決方案,但我仍然希望找到更簡單的方法 – jezzarax 2013-05-03 21:15:04

相關問題