关于MongoDB where

407 阅读4分钟

Mongodb where

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操作符的参数描述语法。

  1. 集合名称 -

这被定义为集合的名称,用于使用where操作符从集合中检索数据。我们需要在查找方法中指定集合名称,以便在MongoDB中使用where操作符检索数据。

  1. 查找 - 这是用来通过使用where操作符从集合中查询数据。我们可以使用漂亮的find方法,以结构化的格式来检索文档的结果。

  2. Where - 这是用操作符来显示匹配的文档结果。我们必须使用where操作符传递JavaScript函数或表达式来显示文档的结果。

  3. JavaScript表达式 - 使用where操作符,我们必须通过JavaScript表达式来返回集合中的匹配文档的结果。使用where操作符时,这个参数的类型是一个字符串。

  4. 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操作符中使用的可用属性。

  1. Args
  2. MaxKey
  3. MinKey

我假设我们没有从我们的函数中找到任何匹配的文档,我们已经使用了where操作符,那么where操作符将返回空结果集。

在下面的例子中,我们可以看到,我们没有找到一个指定的十六进制字符串的名字,所以where操作符没有在输出中显示任何结果。

代码。

db.where_test.find () db.where_test.find ( { $where: function() { return (hex_md5(this.name) == "9b53e667f30cd329dca1ec9e6a83e99") } } );

MongoDB 1

图 - 当在集合中没有找到任何匹配的文件时,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 ()

8

图 - 使用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 ()

10

图 - 使用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 ()

11

图 - 使用JavaScript表达式的Where操作的例子。

总结

当我们需要从集合中检索匹配的文档时,Where操作符在MongoDB中非常有用。JavaScript函数和JavaScript表达式与where操作符一起使用来显示匹配的文档。我们可以使用多个JavaScript函数,如MD5,hex_md5,来显示使用where操作符的集合的结果。

推荐文章

这是一个关于Mongodb where的指南。在这里我们讨论了定义,语法,在Mongodb中where是如何工作的?例子,以及代码实现。你也可以看看下面的文章来了解更多

  1. MongoDB Join
  2. MongoDB findOne()
  3. MongoDB的分组
  4. MongoDB数据库

The postMongodb whereappeared first onEDUCBA.