我的应用程序中有一个搜索字段,我希望用户输入搜索字词,然后搜索每个Mongo文档中的各个字段。当然,我可以在String
类型的字段(当前使用正则表达式)中搜索数据,但是如何对类型为Date
或类型为Int
的字段执行此操作?
注意:当我在字段中说搜索时,我的意思是如果用户在搜索字段中键入“16”,它将返回包含“16”的日期,例如2016年1月1日或16/03/2014。整数的原理相同。
答案 0 :(得分:0)
我认为一种快捷方式是你可以使用$ where 值搜索val =“16”
db.foo.find({$where : "function(){ if(this.dateField.toString().indexOf(val)>= 0 || (""+this.intField).indexOf(val)>=0){return true;}}"})
基本上你可以尝试将字段值转换为字符串,然后在那里搜索它。下行是$ where不使用索引,它基本上扫描集合,当你使用$ where时不能使用其他运算符。
答案 1 :(得分:-1)
是的,这是可能的。
您可以告诉find()仅查看特定数据类型的字段。
$type comes handy.
查看以下链接以获取示例和用法。 https://docs.mongodb.com/manual/reference/operator/query/type/
一个例子是
db.addressBook.find({"field": "search-value"}, { "field" : { $type : "double" } } )
将返回search-value匹配的文档以及该字段的类型为double。
答案 2 :(得分:-1)