如何使用 $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
是收款人或付款人。
虽然我使用 $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
是收款人或付款人。