MongoDB将文档与给定数组中的所有元素进行匹配

时间:2015-11-21 01:56:18

标签: arrays mongodb

我有一个数组

solvedProblemIds = [0,2]

我想查询在solveProblemIds数组中的requiredProblems数组中包含所有元素的文档。

例如,如果这些是我的文件:

{
    id: 0,
    name: "Problem 1",
    points: 10,
    description: "Problem 1 desc",
    requiredProblems: []
},
{
    id: 1,
    name: "Problem 2",
    points: 10,
    description: "Problem 2 desc",
    requiredProblems: [0]
},
{
    id: 2,
    name: "Problem 3",
    points: 10,
    description: "Problem 3 desc",
    requiredProblems: [0]
},
{
    id: 3,
    name: "Problem 4",
    points: 10,
    description: "Problem 4 desc",
    requiredProblems: [0, 2]
},
{
    id: 4,
    name: "Problem 5",
    points: 10,
    description: "Problem 5 desc",
    requiredProblems: [0, 1, 2, 3]
}

查询应与ID为3,2,1和0的文档匹配。 我查看了$ in选择器,但它只需要一个元素在数组中,而不是全部。

1 个答案:

答案 0 :(得分:1)

没有开箱即用的运营商可以确定子集。您可以进行聚合(我没有想过如何)或以下内容:

{ $not: { $elemMatch: { $nin: [0, 2] } } }

这是找到文件,使得不存在[0,2]中没有的元素。