【问题标题】:How to run this query in mongodb?如何在 mongodb 中运行此查询?
【发布时间】:2010-12-14 14:57:06
【问题描述】:

我的文档有一个数组字段 Keys

Keys1 和 Keys2 是两个数组

我想要 Keys 在 Keys1 AND 中包含任何值的所有文档 键2

【问题讨论】:

    标签: mongodb nosql


    【解决方案1】:

    目前还没有很好的方法来表示这个查询(从 1.1.2 开始) - 如果您在列表中询问或提交功能请求,我们可以尝试制作一些东西。

    目前最好的办法可能是使用 $in 查询来完成一半的工作:

    db.test.find({keys: {$in: Keys1}})

    您可以结合使用 $where 来执行此操作,它可以执行 Keys2 部分(但不会利用索引 - 这就是为什么最好使用常规查询语法尽可能多地执行此操作)。这看起来像这样:

    db.test.find({keys: {$in: Keys1}, $where: "for (i in this.keys) { for (j in Keys2) { if (this.keys[i] == Keys2[j]) return true;}} return false;"})

    在 mongodb 2.6+ 的最新版本中,您可以通过 $and 运算符来执行此操作。

    db.test.find({$and:[{keys: {$in: Keys1}},{keys: {$in: Keys2}}]})
    

    【讨论】:

      猜你喜欢
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-16
      • 2011-05-24
      • 2014-12-31
      • 2019-06-30
      • 1970-01-01
      相关资源
      最近更新 更多