【问题标题】:Is it possible to use function in MongoDB $where clause?是否可以在 MongoDB $where 子句中使用函数?
【发布时间】:2014-05-19 00:41:14
【问题描述】:

我需要知道是否可以在 $where 子句字符串中使用这样的函数:

db.myCollection.find( "this.name == 'xyz' || function() {return 1>0;} || this.name == 'abc'" );

提前致谢。

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    可以在 JS 的函数中使用嵌套函数,但有一些注意事项,这个问题会告诉你:JavaScript Nested function

    但是,正如@JohnnyHK 所说,如果有的话,这并不是做$where 的好方法。

    【讨论】:

      【解决方案2】:

      我不太确定您要做什么,但将所有检查放在一个函数中,这就是 $where 的值:

      db.myCollection.find({$where: function() {
          return this.name == 'xyz' || 1>0 || this.name == 'abc';
      }});
      

      【讨论】:

      • 是的,我知道正确的方法,但我只需要知道是否可以将简单的条件和更复杂的函数组合在 $where 子句的字符串中。
      • @Akdeniz 也许我错过了一些东西,但你不能试试你想做的事情,看看它是否有效吗?我不希望它会。
      • 实际上我试过了,希望能返回所有 myCollection 数据,但相反它什么也没返回。在这一点上,我不知道是哪种情况: - 可以在字符串中使用函数,但我使用不当,或者 - 这种用法是不可能的,并且函数以某种方式破坏了整体条件。顺便说一句,谢谢你的时间..
      • @Akdeniz 理论上它应该可以工作,只要它都在这样的 evable 语句中运行,但它的使用可能会有些复杂,我从未尝试过。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-30
      • 1970-01-01
      相关资源
      最近更新 更多