收集结构如下:
{"_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.
答案 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}}}});
}