使用长度条件查询 MongoDB

发布于 2024-10-16 20:06:01 字数 109 浏览 3 评论 0原文

我在 MongoDB 集合中有几个文档,其中有一个字段“名称”(它是一个字符串)。

如何执行类似 7 <= name.length <= 14 的查询

I have several documents in a MongoDB Collection, with a field 'name' (which is a String).

How can I perform queries like 7 <= name.length <= 14

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

妥活 2024-10-23 20:06:01

您可以使用 JavaScript 表达式< /a>.

User.where("this.name.length >= 7 && this.name.length <= 14")

You can use a JavaScript expression.

User.where("this.name.length >= 7 && this.name.length <= 14")
锦上情书 2024-10-23 20:06:01

Mongo 提供了几种使用长度条件执行查询的方法 - $where$regex 是两个不错的选择,但我建议使用 $regex由于更好的查询性能。


$where (较慢)

接受查询中的 JavaScript 表达式或函数

示例:

db.collection.find({ $where: 'this.name.length >= 7 && this.name.length <= 14' })

注意:$where 运算符不会利用您的数据库索引,从而导致一个慢得多的查询。 - 来源


$regex (更快)

为查询中的模式匹配字符串提供正则表达式功能

示例:

db.collection.find({ name: { $regex: /^.{7,14}$/ } })

注意:$regex 运算符利用您的数据库索引,从而实现更快的查询(如果您的收藏已正确索引)。 - 来源

Mongo provides a few ways to perform a query with length criteria – $where or $regex are two great options however I would recommend using $regex due to better query performance.


$where (slower)

Accepts either a JavaScript expression or function in queries

Example:

db.collection.find({ $where: 'this.name.length >= 7 && this.name.length <= 14' })

Note: The $where operator will not take advantage of your database indexes, resulting in a much slower query. - Source


$regex (faster)

Provides regular expression capabilities for pattern matching strings in queries

Example:

db.collection.find({ name: { $regex: /^.{7,14}$/ } })

Note: The $regex operator will take advantage of your database indexes, resulting in a much faster query (if your collection is indexed properly). - Source

甜心 2024-10-23 20:06:01

您可以使用 MongoDB 的 $where 查询参数将 javascript 提交到服务器。例如:

db.myCollection.find( {$where: "(7 <= this.name.length) && (this.name.length <= 14)"} )

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-JavascriptExpressionsand%7B%7B%24where%7D%7D

You can use MongoDB's $where query parameter to submit javascript to the server. E.g.,:

db.myCollection.find( {$where: "(7 <= this.name.length) && (this.name.length <= 14)"} )

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-JavascriptExpressionsand%7B%7B%24where%7D%7D

病女 2024-10-23 20:06:01

$where 查询效率不高。 MongoDB

如果这样是一个经常执行的查询,您可能希望将长度存储在单独的字段中。 非规范化

$where queries are not very efficient. MongoDB

If this is a frequently executed query, you might want to store the length in a separate field. Denormalization

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文