在SQL中我可以做到
UPPER(REPLACE(field.name, ' ', '')) LIKE '%" . $input . "%'
将删除空格,并在将字符串与$ input进行比较之前将其转换为大写字母。
有没有办法用mongodb做到这一点?
答案 0 :(得分:2)
我知道的唯一方法是使用$where Queries。请考虑以下示例:
首先插入一些测试数据
db.likecoll.insert({"name" : "John Smith"})
db.likecoll.insert({"name" : "Jo hn Smith "})
db.likecoll.insert({"name" : "JohnSmith"})
db.likecoll.insert({"name" : "JohnNOSmith"})
然后运行此查询以替换名称字段中的空格
db.likecoll.find({"$where" : "return this.name.replace(new RegExp(' ', 'g'), '') == 'JohnSmith'" })
结果是
{ "_id" : ObjectId("52f5459eb08622ca2b16ede9"), "name" : "John Smith" }
{ "_id" : ObjectId("52f545adb08622ca2b16edea"), "name" : "Jo hn Smith " }
{ "_id" : ObjectId("52f545b8b08622ca2b16edeb"), "name" : "JohnSmith" }
这应该对你有用,但我个人并不喜欢这种方法,主要是因为与可以用索引覆盖的查询相比,这很慢。对于SQL服务器查询,这也是如此。
编辑:
要将字符串转换为大写,请使用str.toUpperCase()
javascript函数。
希望它有所帮助!