尽管我正在使用$and
逻辑查询运算符来联接多个查询子句,但是$and
逻辑查询运算符似乎 IGNORE 其中一个查询子句。有人可以在查询中解释我哪里出问题了吗?
在主题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"
有人可以解释一下为什么会发生这种情况,以及如何纠正我的查询吗?
答案 0 :(得分:1)
基本上,您在下面的注释中指定的规则(假设我正确理解了这些规则)可以标准化为->“将所有文件退还给我作为付款人或收款人的地方。”
recipientsDetails.find( { $or: [ { payersNumber: usersPhoneNumber },
{ recipientNumber: usersPhoneNumber }
] }).fetch();
这应该返回usersPhoneNumber
是收件人或付款人的文件。