虽然我现在用的是$and
逻辑查询运算符来连接多个查询条款,$and
逻辑查询经营者似乎忽视了查询语句中的一项。可有人好心解释我在哪里我的查询回事?
查找主题recipientsDetails.find({}).fetch();
文件的相关内容如下:
0
payersNumber: "+254700027685"
recipientNumber: "+254700007633"
1
payersNumber: "+254700007633"
recipientNumber: "+254700007633"
2
payersNumber: "+254700007633"
recipientNumber: "+254700007633"
当下面的查询(由$and
逻辑查询操作结合在一起)运行时,它似乎忽略{payersNumber: { $ne: usersPhoneNumber } }
条款。
var userIdCode = Meteor.userId();
var phoneNumber = Meteor.users.findOne({_id: userIdCode }, { fields: { "profile.telephoneNumber": 1 } } );
var usersPhoneNumber = phoneNumber.profile.telephoneNumber;
recipientsDetails.find( { $and: [ { payersNumber: usersPhoneNumber },
{ recipientNumber: usersPhoneNumber },
{ payersNumber: { $ne: usersPhoneNumber } }
] }).fetch();
由于忽略了查询子句,上述产量查询:
0
payersNumber: "+254700007633"
recipientNumber: "+254700007633"
1
payersNumber: "+254700007633"
recipientNumber: "+254700007633"
代替:
0
payersNumber: "+254700027685"
recipientNumber: "+254700007633"
1
payersNumber: "+254700007633"
recipientNumber: "+254700007633"
2
payersNumber: "+254700007633"
recipientNumber: "+254700007633"
可有人好心解释为什么发生这种情况,以及如何纠正我的查询?
从本质上讲,你在下面的评论中指定的规则(假设我理解正确它们),可以被标准化为 - >“回到我的付款人或接收器的所有文件”。
recipientsDetails.find( { $or: [ { payersNumber: usersPhoneNumber },
{ recipientNumber: usersPhoneNumber }
] }).fetch();
这应返回文档,其中usersPhoneNumber
是收件人或付款人。