gpt4 book ai didi

javascript - 为什么 MongoDB 查询使用 $gt 和 $lte 而不是 > 和 <=?

转载 作者:IT老高 更新时间:2023-10-28 13:25:09 24 4
gpt4 key购买 nike

我是 MongoDB 的新手。它似乎是建立在 JavaScript 语法之上的。为什么不能使用更清晰的比较运算符,如 <>=而不是 $gt$lte ?

来自在线 shell 的示例:

db.scores.find({a: {'$gte': 2, '$lte': 4}});

最佳答案

我的猜测是他们觉得你经常会忘记引号并写 {a: {>: 2}} .在 JavaScript 和其他一些语言中,写 $gte 时省略引号是完全可以的。 (例如 {a: {$gte: 2, $lte: 4}}{"a": {"$gte": 2, "$lte": 4}} 一样有效。当您在 Mongo shell 中尝试查询时,这可以节省大量输入。

我不确定您是否在问这个问题,但让我来解决为什么查询语言看起来不像 SQL 的问题,例如为什么我们不能将查询写成 a >= 2 && a <= 4 (除了 $where 查询)。这样做的原因是,运行该查询的唯一方法是解析 JavaScript 并为每个文档运行。使用索引是不可能的,并且每个文档都必须从存储在磁盘上的 BSON 数据转换为内存中的 JavaScript 对象(顺便说一下,当您执行 $where 查询时会发生这种情况,一组或 map 减少)。

使用 JSON/BSON 表示法进行查询的优雅之处在于它们是纯数据,可以在客户端和服务器端进行操作和分析。在服务器上,查询永远不会通过 JavaScript 解释器,而是被提供给查询计划器,后者将其分离、制定计划并执行。在客户端,查询可以使用客户端语言自己的数据结构构建,并且只有在传递到服务器时才能转换为通用表示(即 BSON)。

关于javascript - 为什么 MongoDB 查询使用 $gt 和 $lte 而不是 > 和 <=?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4544936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com