【问题标题】:MongoDB query comparing 2 fields in same collection without $whereMongoDB查询比较同一集合中的2个字段,没有$where
【发布时间】:2012-02-08 19:43:41
【问题描述】:

MongoDB 是否支持使用 本地运算符(不是 $where 和 JavaScript)比较同一集合中的两个字段? 我已经看过 similar questions 并且所有答案都使用了 $where / JavaScript。

MongoDB documentation 明确指出:

JavaScript 的执行速度比本页列出的本地运算符慢,但非常灵活。

我最关心的是速度,如果可能的话,我想使用索引。那么是否可以在不使用 JavaScript 的情况下比较 MongoDB 中的两个字段?

【问题讨论】:

  • 您确定 $where 运算符对于您的用例来说太慢了吗?
  • @maerics 简短回答 - 是的。如果其他一切都失败了 $where 将是我最后的手段。但我非常想避免 $where 并尽可能按索引字段搜索。

标签: mongodb


【解决方案1】:

这目前是不可能的,但可以通过目前正在开发的新聚合框架(2.1+)来实现。这个聚合框架是原生的,不依赖相对较慢的 JavaScript 执行路径。

更多详情请查看http://www.mongodb.org/display/DOCS/Aggregation+Framework 以及https://jira.mongodb.org/browse/SERVER-447的进度

【讨论】:

    【解决方案2】:

    从阅读您链接的文档来看,MongoDB 似乎无法仅使用本机运算符比较两个文档属性。

    也许您可以修改文档本身(和/或保存文档的代码)以包含一个布尔属性,该属性具有比较结果(提前),然后根据需要简单地查询该新属性。您甚至可以将其编入索引以获得更好的性能。

    【讨论】:

    • 感谢您的意见,但这并不能真正解决我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 2015-01-31
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多