是否有mongo替换方法/运算符?

时间:2014-02-07 17:14:04

标签: javascript sql mongodb

在SQL中我可以做到

UPPER(REPLACE(field.name, ' ', '')) LIKE '%" . $input . "%'

将删除空格,并在将字符串与$ input进行比较之前将其转换为大写字母。

有没有办法用mongodb做到这一点?

1 个答案:

答案 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函数。

希望它有所帮助!

有一项功能请求:https://jira.mongodb.org/browse/SERVER-829