meteor - 我应该使用什么“逻辑查询运算符/s”来合并两个单独的查询?
问题描述
我使用什么逻辑查询运算符来连接两个查询,生成属于登录用户的文档 Meteor.userId();
和变量中包含登录用户电话号码的所有文档。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"
任何人都可以向我解释为什么忽略它以及如何更好地制定主题中的查询吗?
解决方案
我相信如果您替换以下内容,它应该可以工作:
recipientsDetails.find( { $and: [{payersUserId: user}, {recipientNumber: usersNumber } ] } ).fetch();
和
recipientsDetails.find( { $or: [{payersUserId: user}, {recipientNumber: usersNumber } ] } ).fetch();
推荐阅读
- python - 如何在 Google Analytics API DimensionFilter 中有多个表达式?
- typescript - 在 Ramda 的管道函数上扩展数组给出类型错误“预期 1-6 但得到 0 或更多”
- python - Python for i in range(2,2): print(i) i 变量包含什么,它不包含值 2?
- azure-machine-learning-studio - 使用 ML Studio API 开发 CD/CI 的最佳实践是什么?
- java - 在 javafx 程序上创建可执行 .jar 时出错
- r - psych 包中 scoreItems 函数中的错误:未找到列
- ruby-on-rails - 如何实现 has_many :through 关联两种方式?
- javascript - 将最终属性与使用 javascript 代理访问的中间属性区分开来
- c - 解析成一个结构
- javascript - 具有大量数据的 JQuery 数据表?