如何查询嵌套的mongo集合

时间:2019-05-03 14:09:18

标签: mongodb collections

我有一个名为“个人资料”的集合,它的结构如下:

{
_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 });
});

如何正确查询这种嵌套集合?

2 个答案:

答案 0 :(得分:1)

对于此类查询,您应使用“ $ in”运算符。

Profiles.find({ 'classrooms.students' : { $in :['CCD7U'] } } )

参考:MongoDB documentation; $in

答案 1 :(得分:0)

通常情况下,您会查询

Profiles.find( { 'classrooms': 'classroomName' } );

但是因为您正尝试从嵌套中查找内容,所以您需要这样做

Profiles.find( { 'classrooms': { 'students' : CCD7U } } );
相关问题