如何在 mongodb 中运行此查询?

Posted

技术标签:

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

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

Keys1Keys2 是两个数组

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

【问题讨论】:

【参考方案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])

【讨论】:

以上是关于如何在 mongodb 中运行此查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MongoDB 中执行此 Sql 查询

此 SQL 查询的 MongoDB 等效项

带有排序的 MongoDB 范围查询 - 如何加快速度?

如何在 C# 中使用原始 MongoDB 聚合查询?

java - 如何在java中查询mongoDb时使用Criteria all?

我如何编写一个从 mongodb 查询的辅助函数,然后可以为任何 ejs 模板调用此函数