Что Оператор логического запроса / с я использую для объединения ДВА запросов, выдающих документы, принадлежащие зарегистрированному пользователю Meteor.userId();
AND все документы, в которых зарегистрирован пользовательский номер телефона в переменной recipientNumber
.
Документ, содержащий зарегистрированных пользователей телефонный номер в переменной recipientNumber
, предполагает, что зарегистрированных пользователей являются получателем денежных средств.
Для справки, найдите ниже зарегистрированных пользователей детали:
var user = Meteor.userId();
var userDetails = Meteor.users.findOne({_id: user}, { fields: { "profile.telephoneNumber": 1, "profile.name": 1 } } );
var usersNumber = userDetails.profile.telephoneNumber;
var userName = userDetails.profile.name;
console.log("Users _id is: " +user);
console.log("Users Number is: " +usersNumber);
console.log("Users Name is: " +userName);
Код выше правильно дает:
Users _id is: "sxY3fsY9LmJYqFkiG"
Users Number is: +254705086633
Users Name is: Sir.BT
recipientsDetails.find({ }).fetch();
показывает содержание сборника в теме:
0:
payersName: "The LucidOreo"
payersUserId: "KDJFGkCRF3E5nY37e"
recipientNumber: "+254705086633"
_id: "MMyinrcrrYpz2haxq"
1:
payersName: "Sir.BT"
payersUserId: "sxY3fsY9LmJYqFkiG"
recipientNumber: "+254705086633"
_id: "YbPFT9ecCA4FTgqsn"
2:
payersName: "Sir.BT"
payersUserId: "sxY3fsY9LmJYqFkiG"
recipientNumber: "+254705577633"
_id: "ZPWNsQ7TWSJcERSJv"
Запрос ниже фильтрует коллекцию, чтобы показать только документы, принадлежащие пользователю на основе пользователей. Meteor.userId () : sxY3fsY9LmJYqFkiG .
var user = Meteor.userId();
recipientsDetails.find( {payersUserId: user} ).fetch();
Найти под результатами:
0:
payersName: "Sir.BT"
payersUserId: "sxY3fsY9LmJYqFkiG"
recipientNumber: "+254705086633"
_id: "YbPFT9ecCA4FTgqsn"
1:
payersName: "Sir.BT"
payersUserId: "sxY3fsY9LmJYqFkiG"
recipientNumber: "+254705577633"
_id: "ZPWNsQ7TWSJcERSJv"
Я бы хотел сформулировать запрос, который показывает комбинацию ДВА вещей:
Все документы, принадлежащие зарегистрированному пользователю (как показано в приведенном ниже коде):
var user = Meteor.userId();
recipientsDetails.find( {payersUserId: user} ).fetch();
... и все документы, которые содержат номер телефона зарегистрированного пользователя (также как показано в коде ниже):
var user = Meteor.userId();
var userDetails = Meteor.users.findOne({_id: user}, { fields {"profile.telephoneNumber": 1 } } );
var usersNumber = userDetails.profile.telephoneNumber;
recipientsDetails.find( {recipientNumber: usersNumber} ).fetch();
Какие логические операторы запросов я должен использовать в запросе для получения этого?
Я попробовал:
var user = Meteor.userId();
var userDetails = Meteor.users.findOne({_id: user}, { fields: { "profile.telephoneNumber": 1 } } );
var usersNumber = userDetails.profile.telephoneNumber;
recipientsDetails.find( { $and: [{payersUserId: user}, {recipientNumber: usersNumber } ] } ).fetch();
К сожалению, это ошибочно дает:
0:
payersName: "Sir.BT"
payersUserId: "sxY3fsY9LmJYqFkiG"
recipientNumber: "+254705086633"
_id: "YbPFT9ecCA4FTgqsn"
1:
payersName: "Sir.BT"
payersUserId: "sxY3fsY9LmJYqFkiG"
recipientNumber: "+254705577633"
_id: "ZPWNsQ7TWSJcERSJv"
... и пропускает:
payersName: "The LucidOreo"
payersUserId: "KDJFGkCRF3E5nY37e"
recipientNumber: "+254705086633"
_id: "MMyinrcrrYpz2haxq"
... который явно несет recipientNumber: "+254705086633"
число зарегистрированных пользователей число.
Чтобы уточнить, желаемая доходность будет:
0:
payersName: "The LucidOreo"
payersUserId: "KDJFGkCRF3E5nY37e"
recipientNumber: "+254705086633"
_id: "MMyinrcrrYpz2haxq"
1:
payersName: "Sir.BT"
payersUserId: "sxY3fsY9LmJYqFkiG"
recipientNumber: "+254705086633"
_id: "YbPFT9ecCA4FTgqsn"
2:
payersName: "Sir.BT"
payersUserId: "sxY3fsY9LmJYqFkiG"
recipientNumber: "+254705577633"
_id: "ZPWNsQ7TWSJcERSJv"
Может ли кто-нибудь любезно объяснить мне, почему это опущено и как лучше сформулировать запрос в теме?