【发布时间】:2013-12-04 10:28:26
【问题描述】:
我有一个具有以下文档类型的集合:
{
field1: 1,
field2: "test1",
field3: [1,2,3]
}
假设我的收藏中有以下文档(忽略field1 和field2,只考虑field3)
收藏:
doc1- {...
field3: [3,4,5,6]
}
doc2- {...
field3: [3,4]
}
doc3- {...
field3: [1,2,3]
}
doc4- {...
field3: [3,6,7]
}
现在,我在 field3 上使用值 [3,4,6,7] 查询此集合。
因此,我在集合中执行查询的方式是,我应该获取在查询数组中存在其所有数组元素的所有文档。
就我而言,它应该返回文档doc2 和doc4,因为它的所有field3 元素都存在于查询中,但Query.ALL 不起作用。
如何在 MongoDB 查询中完成此操作?
(为更清晰而编辑)
为什么 $all 不起作用?
EX:如果我的查询数组是 [3,4],当我使用 Query.All("field3",new BsonValue[]{3,4}) 时, 我将获得所有带有“field3”的文档,其中包含查询数组中的所有元素,即 3 和 4。所以在这种情况下,我的结果文档将是上面示例中的 doc1 和 doc2。但我的要求只有doc2。因为我的文档的所有元素都应该在我的查询数组中,而不是相反。
为什么 $in 不起作用? 如果 quetiong 数组的至少一个元素存在于文档中,则检索它。 例如:查询数组是 [3,4],当我使用 Query.In("field3",new BsonValue[]{3,4}) 时, 结果将是集合 doc1、doc2、doc3 和 doc4 的所有 4 个文档
【问题讨论】:
-
也许你的问题已经被问过了here。