我有一个名为“个人资料”的集合,它的结构如下:
{
_id : XXXXX,
classrooms:{
owner:[],
students: [XYSk0,CCD7U],
},
...
}
我想获取classrooms.students
等于CCD7U
的个人资料。
我尝试在集合发布功能上使用$elemMatch
,但未成功:
Meteor.publish('StudentsInClassrooms', function(CCD7U){
return Profiles.find({ classrooms : { $elemMatch :{ students : CCD7U }} });
});
我什至尝试使用点表示法,但仍然失败:
Meteor.publish('StudentsInClassrooms', function(CCD7U){
return Profiles.find({ 'classrooms.students' : CCD7U });
});
如何正确查询这种嵌套集合?
答案 0 :(得分:1)
对于此类查询,您应使用“ $ in”运算符。
Profiles.find({ 'classrooms.students' : { $in :['CCD7U'] } } )
答案 1 :(得分:0)
通常情况下,您会查询
Profiles.find( { 'classrooms': 'classroomName' } );
但是因为您正尝试从嵌套中查找内容,所以您需要这样做
Profiles.find( { 'classrooms': { 'students' : CCD7U } } );