我们有一组具有以下结构的元素:
要素:
{
id : 123,
items : [ { color: "blue", "groups" : [3, 5] }, { color: "red", "groups" : [6, 8] } ]
}
{
id : 124,
items : [ { color: "blue", "groups" : [1, 2] }, { color: "green", "groups" : [5, 9] } ]
}
我们想要一种有效的方法来获取具有可访问组 5、9、27、123 或 56 的蓝色项目的元素。这应该返回 ID 为 123 的元素,但不返回 ID 为 124 的元素,因为项目必须满足这两个条件。我们希望查询尽可能高效。
此查询高效但不满足要求:
{$and : { "items.groups" : { $in : [5, 9, 27, 123, 56] }, "items.color" : "blue" }}
因为它会匹配id = 124
,因为它有一个匹配“蓝色”的项目和另一个匹配第 9 组的项目。