如何使用 $and 逻辑查询运算符来应用于所有三个查询子句?

How do I use the $and Logical Query Operator to apply to all three Query clauses?

虽然我使用 $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"

谁能解释一下为什么会这样,以及如何更正我的查询?

基本上,您在下面的评论中指定的规则(假设我理解正确)可以规范化为 -> "Return all documents where I am the payer or receiver".

recipientsDetails.find( { $or: [ { payersNumber: usersPhoneNumber }, 
                                  { recipientNumber: usersPhoneNumber } 
                                ] }).fetch();

这应该 return 文档,其中 usersPhoneNumber 是收款人或付款人。