假设我有一个学生对象数组字段,例如[{id:foo, name: bar, imageurl:baz}]
在课程集合中。并且我想仅返回在学生字段中具有给定学生ID的课程。
如果我使用$elemMatch
,我会在课程集合以及我想要的课程中获得一堆文档。有没有办法解决这个问题,或者我绝对必须做一些后期查询过滤来只返回一个文档?
编辑: 例如课程集合:
{
_id: 1,
course: "OOP 101",
students: [
{ name: "ajax", school: 100, age: 7 },
{ name: "achilles", school: 100, age: 8 },
]
}
{
_id: 2,
course: "Programming 101",
students: [
{ name: "john", school: 102, age: 10 },
{ name: "ajax", school: 100, age: 7 },
{ name: "achilles", school: 100, age: 8 },
]
}
{
_id: 3,
course: "Database 101",
students: [
{ name: "john", school: 102, age: 10 },
{ name: "jess", school: 102, age: 11 },
{ name: "jeff", school: 108, age: 15 }
]
}
预计如果我使用$elemMatch
找到课程杰夫正在输出:
{
_id: 3,
course: "Database 101",
students: [
{ name: "john", school: 102, age: 10 },
{ name: "jess", school: 102, age: 11 },
{ name: "jeff", school: 108, age: 15 }
]
}
与
{
_id: 1,
course: "OOP 101"
{
_id: 2,
course: "Programming 101"
}
{
_id: 3,
course: "Database 101",
students: [
{ name: "john", school: 102, age: 10 },
{ name: "jess", school: 102, age: 11 },
{ name: "jeff", school: 108, age: 15 }
]
}
你能否:
如果你只想要其中的一个,你可能会与
$limit
阶段一起使用聚合框架(在大多数情况下,你应该使用$sort
阶段$limit
前)向我们展示一些样本文件和预期产出? – chridam@chridam请参阅编辑? – wemadeit
我编辑了您的问题,根据您提供的一个链接显示样本集合。你能**显示预期输出的例子**吗? –