1

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

Keys1Keys2是两个数组

我想要Keys包含 Keys1 中的任何值和Keys2的任何值的所有 文档

4

1 回答 1

3

目前还没有很好的方法来表示这个查询(从 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}}]})
于 2009-11-10T14:22:54.787 回答