我在我的應用程序中有一個搜索字段,我希望用戶輸入一個搜索詞並在每個Mongo文檔的各個字段中搜索。當然,我可以在String
(目前使用正則表達式)類型的字段中搜索數據,但是如何爲Date
類型或Int
類型的用戶執行此操作?是否可以在類型爲Date或Int的MongoDB字段中進行搜索?
注意:當我在字段中說搜索時,我的意思是如果用戶在搜索字段中鍵入'16',它將返回包含'16'的日期,例如, 01/01/2016或16/03/2014。整數相同的原則。
我在我的應用程序中有一個搜索字段,我希望用戶輸入一個搜索詞並在每個Mongo文檔的各個字段中搜索。當然,我可以在String
(目前使用正則表達式)類型的字段中搜索數據,但是如何爲Date
類型或Int
類型的用戶執行此操作?是否可以在類型爲Date或Int的MongoDB字段中進行搜索?
注意:當我在字段中說搜索時,我的意思是如果用戶在搜索字段中鍵入'16',它將返回包含'16'的日期,例如, 01/01/2016或16/03/2014。整數相同的原則。
是的,這是可能的。
您可以告訴您的find()只查看具有特定數據類型的字段。
$type comes handy.
查看以下鏈接的示例和用法。 https://docs.mongodb.com/manual/reference/operator/query/type/
一個例子是
db.addressBook.find({"field": "search-value"}, { "field" : { $type : "double" } })
將返回這裏搜索值有一個匹配的文件,以及如果字段的類型爲double。
一個快速的方式,我認爲是可以使用$哪裏 值到搜索VAL =「16」
db.foo.find({$where : "function(){ if(this.dateField.toString().indexOf(val)>= 0 || (""+this.intField).indexOf(val)>=0){return true;}}"})
什麼基本上你可以嘗試是轉換的字段值轉換爲字符串,然後搜索它在那裏。缺點是$哪裏不使用索引,它基本上掃描集合,當您使用$ where時,不能使用其他運算符。
因爲我有一個圖像,因此張貼它作爲另一個答案,而不是評論。
現在,如果你發現,與ID 2和ID 6文件是完全一樣的。唯一不同的是郵政編碼字段的數據類型。
我用$運行了我的查詢,正如你所看到的,它只帶回匹配的記錄。如果我擺脫了$和$ type條件,它將帶回兩條記錄。
我希望這會幫助你解決你的問題。
問題沒有要求限制基於數據類型返回的結果。它要求在Date或Int32字段中搜索一個數字。 – JoeTidee
好的,我完全誤解它會嘗試找到一個可行的解決方案。 –
如何將此方法與在字符串類型的字段中搜索相結合? – JoeTidee
上面的查詢不會僅返回字段類型爲「double」的文檔嗎?如果是這樣,這不能解決原來的問題。 – JoeTidee