node.js - 如何在另一个集合的某些条件下搜索一个猫鼬集合?
问题描述
我有两个猫鼬系列。让我们考虑collection-1
和collection-2
。他们的数据类似于以下数据
集合 1:
{'name': 'Tom', 'age':20, 'bank-acc':1111},
{'name': 'Dick', 'age':25, 'bank-acc':2222},
{'name': 'Hary', 'age':22, 'bank-acc':3333}
集合-2
{'bank-acc':1111, 'balance':100},
{'bank-acc':2222, 'balance':200},
{'bank-acc':3333, 'balance':300}
现在我想同时查询这两个集合,以从集合 1 中获取年龄大于 20 并且在集合 2 中余额大于 100 的名称。有人建议我,因为这是 MongoDB,它是一个NO-SQL
数据库,所以我应该将这两个表合并为一个,然后尝试查询它,但就我而言,将这两个表与真实模式合并是非常不可行的。我想使用查找或类似关键字的聚合查询可能是可能的,但我在很多地方搜索过,我不知道在找到这个问题的答案时要搜索什么。任何人都可以提供一个示例聚合查询来一次搜索两个表吗?
解决方案
集合1
{'name': 'Tom', 'age':20, 'bank-acc':1111},
{'name': 'Dick', 'age':25, 'bank-acc':2222},
{'name': 'Hary', 'age':22, 'bank-acc':3333}
集合2
{'bank-acc':1111, 'balance':100},
{'bank-acc':2222, 'balance':200},
{'bank-acc':3333, 'balance':300}
db.getCollection('collection1').aggregate([
{
$match:{age:{$gt:20} }
},
{
$lookup:{
from:'collection2',
localField:"bank-acc",
foreignField:'bank-acc',
as:'balance'
}
},
{
$unwind:'$balance'
},
{
$match:{
'balance.balance':{$gt:200}
}
},
{
$group:{
_id:null,
names:{$push:'$name'}
}
}
])
推荐阅读
- wordpress - 如何通过表单验证从前端表单提交创建 woocommerce 产品
- java - 无法通过从 JsonObject 获取值来编译代码
- r - 是否可以将 summarise 与 summarise_at 与 dplyr 结合在一个 group_by 中
- java - Docker:未安装 Oracle JDK 8
- spring-batch - 使 Spring Batch ItemReader 可重新启动
- php - 我正在尝试检查我的编辑视图上的所有复选框,以从表中获取数据
- components - ExpressionChangedAfterItHasBeenCheckedError 一个路由两个组件
- javascript - 在 WordPress 中添加到标题时脚本损坏
- python - 如何在填充单元格之前和之后填充空白?
- php - 从 HTML 下拉选择中使用 SQL 'IN' 运算符