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私は共同僧侶を使用しています。