如何使用$和逻辑查询操作,以适用于所有三种查询条款?

问题描述 投票:0回答:1

虽然我现在用的是$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"

可有人好心解释为什么发生这种情况,以及如何纠正我的查询?

mongodb meteor mongodb-query
1个回答
1
投票

从本质上讲,你在下面的评论中指定的规则(假设我理解正确它们),可以被标准化为 - >“回到我的付款人或接收器的所有文件”。

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

这应返回文档,其中usersPhoneNumber是收件人或付款人。

© www.soinside.com 2019 - 2024. All rights reserved.