在 MongoDB 中,我们使用 find 查询记录时,还可以使用 where 字句,$where
操作符功能强大且灵活,它可以将 JavaScript 表达式的字符串或 JavaScript 函数作为查询语句的一部分。
在 JavaScript 表达式和函数中,可以使用 this 或 obj 来引用当前操作的文档。 JavaScript 表达式或函数返回值为 true 时,才会返回当前的文档。
查询时,$where 操作符不能使用索引,每个文档需要从 BSON 对象转换成 JavaSript 对象后,才可以通过 $where 表达式来运行。因此,它比常规查询要慢很多,一般情况下,要避免使用 $where 查询。
db_name.collection_name.find({$where:function() {}})
参数 | 描述 |
---|---|
db_name | 数据库名 |
collection_name | 集合名 |
使用 where 查询记录时,在 function 中写具体的逻辑。
我们首先,使用 mongo 命令,连接上数据库,具体命令如下:
mongo
如下图所示:
现在,我们使用 use 命令,切换到 haicoder 数据库,具体命令如下:
use haicoder
现在,我们使用 insertMany 插入三条记录,具体命令如下:
db.haicoder.insertMany([{"name":"haicoder", "url":"haicoder.net"}, {"name":"mhaicoder", "url":"m.haicoder.net"}, {"name":"notfound", "url":404}])
执行完毕后,此时,如下图所示:
我们看到,此时提示我们成功插入了三条记录,现在,我们使用 find 加上 where 进行查询,查询 name 字段为 haicoder 的所有记录,具体命令如下:
db.haicoder.find({$where:'this.name=="haicoder"'}, {_id:0})
执行完毕后,此时,如下图所示:
我们看到,此时我们查询了 name 字段为 haicoder 的所有的记录,现在我们再次使用 where 进行查询,具体命令如下:
db.haicoder.find({$where:'this.name=="haicoder" && this.url=="haicoder.net"'}, {_id:0})
执行完毕后,此时,如下图所示:
我们看到,我们在 where 里面使用了与操作符。
在 MongoDB 中,我们使用 find 查询记录时,还可以使用 where 字句,$where
操作符功能强大且灵活,它可以将 JavaScript 表达式的字符串或 JavaScript 函数作为查询语句的一部分。