【问题标题】:Mongo one attribute different than the other attribute [duplicate]Mongo一个属性不同于另一个属性[重复]
【发布时间】:2014-09-25 03:33:23
【问题描述】:

如何在 MongoDB 中查找比较同一文档的两个属性?

如果我有这个结构的集合“test”:

{a : 3, b : 4}
{a : 5, b : 5}
{a : 6, b : 6}

我想找到属性“a”与属性“b”不同的所有文档,这将是条目

{a : 3, b : 4}

.

我认为这可以通过以下方式实现:

db.test.find({a : { $ne : b}})

但它没有用。它给了我

Fri Aug  1 13:54:47 ReferenceError: b is not defined (shell):1

【问题讨论】:

标签: mongodb


【解决方案1】:

如果这是一个临时查询并且您不想跟踪不同的属性(如 Marc B. 发布的条目中所述,那么您可以简单地使用:

db.test.find("this.a != this.b");

这会很慢,具体取决于您有多少条目。

【讨论】:

  • 这是错误的 - 你发送一个字符串作为查询,这基本上是一个 noop。
  • @AsyaKamsky :刚刚用我的玩具数据库和这里提出的条目进行了测试, db.test.find("this.a != this.b");返回 {a : 3, b : 4} 和 db.test.find("this.a == this.b");返回 {a : 5, b : 5} {a : 6, b : 6}。我正在使用 MongoDB shell 版本:2.0.4
  • 好的,我明白了 - 您使用的快捷方式在任何驱动程序/应用程序代码中都不起作用 - 这只是将 $where 子句发送到后端(您可以在日志中看到它: "query test.test query: { $where: "this.a==this.b" }"),使答案与 stackoverflow.com/questions/6399426/… 重复是一种更好的方法,因为这不涉及 JS。顺便说一句,不相关:2.0.4 真的旧了。
  • 顺便说一句,这对于 NumberLong、NumberInt 和其他对象数据类型也无法正常工作...
猜你喜欢
  • 2018-12-04
  • 1970-01-01
  • 2017-04-12
  • 2015-09-15
  • 2020-03-02
  • 1970-01-01
  • 2021-09-10
  • 1970-01-01
  • 2016-06-02
相关资源
最近更新 更多