Mongodb where的定义
Mongodb where操作符用于匹配和显示符合我们查询中使用的JavaScript函数或表达式条件的文件。查询包含了JavaScript的函数或表达式,可以使用MongoDB中的where操作符来传递。在MongoDB中使用where操作符时,我们使用了JavaScript表达式或函数参数,在使用where操作符时,我们可以传递其中一个参数。使用where操作符的JavaScript函数或表达式在MongoDB中被称为 "this "或 "obj"。
语法。
下面是MongoDB中where操作符的语法。
Db.collection_name.find ({$where: <JavaScript expression (String) | JavaScript Function>})
MongoDB中where操作符的参数描述语法。
- 集合名称 -
这被定义为集合的名称,用于使用where操作符从集合中检索数据。我们需要在查找方法中指定集合名称,以便在MongoDB中使用where操作符检索数据。
-
查找 - 这是用来通过使用where操作符从集合中查询数据。我们可以使用漂亮的find方法,以结构化的格式来检索文档的结果。
-
Where - 这是用操作符来显示匹配的文档结果。我们必须使用where操作符传递JavaScript函数或表达式来显示文档的结果。
-
JavaScript表达式 - 使用where操作符,我们必须通过JavaScript表达式来返回集合中的匹配文档的结果。使用where操作符时,这个参数的类型是一个字符串。
-
JavaScript函数--使用where操作符,我们通过JavaScript函数来返回集合中的匹配文档的结果。在MongoDB中使用where操作符时,JavaScript函数或JavaScript表达式是一个强制性参数。
在Mongodb中where是如何工作的?
我们在where操作中使用了map、md5、isString、ISODate、hex_md5、emit、gc、UUID、version、NumberLong、NumberInt等JavaScript函数。
MongoDB中有多个JavaScript函数,我们在where操作符中使用这些函数来显示匹配文档的结果。
下面是我们在where操作符中使用的可用属性。
- Args
- MaxKey
- MinKey
我假设我们没有从我们的函数中找到任何匹配的文档,我们已经使用了where操作符,那么where操作符将返回空结果集。
在下面的例子中,我们可以看到,我们没有找到一个指定的十六进制字符串的名字,所以where操作符没有在输出中显示任何结果。
代码。
db.where_test.find () db.where_test.find ( { $where: function() { return (hex_md5(this.name) == "9b53e667f30cd329dca1ec9e6a83e99") } } );
图 - 当在集合中没有找到任何匹配的文件时,where操作符将返回空结果集。
在上面的例子中,我们使用了函数名hex_md5,它用MD5哈希值来比较名称字段的值。在比较了所有的文档后,它将返回匹配的文档的结果。
我们需要使用带有where操作符的查找方法来显示MongoDB中匹配文档的结果。
使用where操作符的查找方法将以非结构化的格式显示结果,为了以结构化的格式显示结果,我们需要使用pretty方法和查找方法。
MongoDB 4.4及以后版本的where操作符不支持被废弃的JavaScript BSON类型代码。它只支持BSON类型字符串或JavaScript BSON类型代码。
一般来说,当我们不能使用其他操作符,或者不能从其他操作符得到预期的结果时,我们应该使用where操作符。
where操作符将对集合进行全面扫描,以找到查询的结果。它将扫描每个文档,从集合中找到匹配的文档。
Where操作符是用来在MongoDB中提供更好的灵活性。
Where操作符不访问任何属性或全局函数,如mongo shell中的db。
例子
下面是MongoDB中where操作符的例子。
1) Where操作符使用hex_md5函数,不使用哈希值----。
在下面的例子中,我们使用了hex_md5函数和where操作符。但是我们没有使用任何哈希值来匹配文档。
我们可以看到,不使用任何哈希值,hex_md5函数将返回集合中的所有文档。
我们用where操作符使用了名字字段,但是所有的文档都被返回,因为我们没有使用任何哈希值与名字字段进行比较。
代码。
db.where_test.find ( { $where: function() { return (hex_md5(this.name)) } } ); db.where_test.find ()
图 - 使用hex_md5函数的where操作符的例子,没有使用哈希值。
2) 使用hex_md5函数的where操作者使用哈希值----。
在下面的例子中,我们使用了hex_md5函数和where操作符。此外,我们还使用了哈希值来匹配文件。我们使用了 "9b53e667f30cd329dca1ec9e6a83e994 "的哈希值来从集合中找到匹配的文档。
我们可以看到,使用哈希值,hex_md5函数将只返回集合中的匹配文档。
我们使用了name字段和where操作符。
代码。
db.where_test.find ( { $where: function() { return (hex_md5(this.name) == "9b53e667f30cd329dca1ec9e6a83e994") } } ); db.where_test.find ()
图 - 使用hex_md5函数的where运算符的例子,使用哈希值。
3) 使用JavaScript表达式的where运算符 -
在下面的例子中,我们使用了JavaScript表达式和where操作符。我们使用JavaScript表达式来匹配名字和用户名字段中的文件。
使用下面的表达式,我们可以看到只有在两个字段上相同的匹配文档才会被返回。
我们使用了一个漂亮的方法和查找方法,以结构化的格式返回结果。
名字和用户名字段被用来从where_test集合中检索匹配的文档。在输出中,我们可以看到有三个文件被返回,其中两个字段的值是相同的。
代码。
db.where_test.find ( { $where: function() { return (this.name == this.username ) } } ) .pretty (); db.where_test.find ()
图 - 使用JavaScript表达式的Where操作的例子。
总结
当我们需要从集合中检索匹配的文档时,Where操作符在MongoDB中非常有用。JavaScript函数和JavaScript表达式与where操作符一起使用来显示匹配的文档。我们可以使用多个JavaScript函数,如MD5,hex_md5,来显示使用where操作符的集合的结果。
推荐文章
这是一个关于Mongodb where的指南。在这里我们讨论了定义,语法,在Mongodb中where是如何工作的?例子,以及代码实现。你也可以看看下面的文章来了解更多
The postMongodb whereappeared first onEDUCBA.