在MongoDB / Meteor中使用elemMatch查找嵌套数组数据

时间:2015-09-07 19:23:28

标签: javascript mongodb meteor

收集结构如下:

{"_id" : "abc",
"potentialUsers" : [{"userID" : "def"}, 
                    {"userID" : "ghi"}]
},

{"_id" : "123",
"potentialUsers" : [{"userID" : "456"}, 
                    {"userID" : "789"}]
},

我想查询用户abc是否在其潜在用户数组中具有用户def。我当前的查询(客户端)是

    getPendingLiftRequests: function() {
        return collection.find({}, {potentialUsers: {$elemMatch: {userID: Meteor.user().services.facebook.id}}});
    }

在服务器上,我将所有该集合发布给用户,然后根据客户端的视图选择性地显示它。但是,当我尝试在阵列上使用elemMatch时,它只显示所有记录,当它应该只显示1.

2 个答案:

答案 0 :(得分:2)

此处您不需要$elemMatch。这应该有效:

var fId = Meteor.user().services.facebook.id;
return collection.find({'potentialUsers.userID': fid});

答案 1 :(得分:2)

请查看Meteor中的minimongo文档: http://docs.meteor.com/#/full/find

您必须使用fields选项来获得所需的结果。

getPendingLiftRequests: function() {
    return collection.find({}, { fields: { potentialUsers: {$elemMatch: {userID: Meteor.user().services.facebook.id}}}});
}