2

Node.js、Koa、MongoDB、Monk を使用しています。

クエリで $elemMatch を使用すると正常に動作しますが、プロジェクションでは無視されます。

このようなデータがあります

{
 _id: 1,
 zipcode: "63109",
 students: [
              { studentId: "1", name: "john", school: 102, age: 10 },
              { studentId: "2", name: "jess", school: 102, age: 11 },
              { studentId: "3", name: "jeff", school: 108, age: 15 }
           ]
}
{
 _id: 2,
 zipcode: "63110",
 students: [
              { studentId: "1", name: "john", school: 102, age: 10 },
              { studentId: "4", name: "achilles", school: 100, age: 8}
           ]
}
{
 _id: 3,
 zipcode: "63109",
 students: []
}
{
 _id: 4,
 zipcode: "63110",
 students: [
              { studentId: "3", name: "jeff", school: 108, age: 15 }
           ]
}

そして私が欲しい:

「zipcode」を含む文書:「63109」

また、学生配列には、'studentId' が '2' であるサブドキュメントのみを含める必要があります (存在する場合)。

つまり、これが欲しい:

{
 _id: 1,
 zipcode: "63109",
 students: [
              { studentId: "2", name: "jess", school: 102, age: 11 }
           ]
}
{
 _id: 3,
 zipcode: "63109",
 students: []
}

しかし、「学生」配列のすべてのサブドキュメントを取得しています。$elemMatch プロジェクションが無視されているようです。

私が使用しているクエリ:

collection.find({"zipcode":"63109"}, {students:{$elemMatch:{studentId:"2"}}})

これを達成する方法はありますか?

PS私は共同僧侶を使用しています。

4

0 に答える 0