mongodb - 有没有办法使用聚合来获取多个条件下的数据
问题描述
我正在尝试使用聚合获取用户的请求用户数据。我得到了多个查询的数据,但现在我想做聚合。这可以获取数据吗?谁能帮我?
这是数据库结构:
{
"userId": ObjectId("5c5d8a0da8625b038ef016e7"),
"email": "kishore.bezawada@merritos.com",
"firstName": "Kishore",
"lastName": "Bezawada",
"phoneNumber": "87678356",
"summary": "",
"street": "",
"city": "",
"state": "",
"country": "",
"pinCode": "",
"requestIds": [
ObjectId("5c5eaecc3a82593d2d9b7544"),
ObjectId("5c5ec25ef3c4aa40de6c9e9b"),
ObjectId("5c5e592cc027fa0c8bb9da05"),
ObjectId("5c64111a3a4ed22084b2ed6b"),
ObjectId("5c5d8a14a8625b038ef016e9"),
ObjectId("5c6409e8e9b8ea69f96ceaf3")
]
}
我完成了以下操作:
db.profile.find({userId: ObjectId("5c5d8a0da8625b038ef016e7") }, {}).toArray(function(err, info){ db.profile.find({userId: {$in: info[0].requestIds}}, {}).toArray(function(err, resp){console.log(resp)
});
});
现在如何将其修改为聚合?
解决方案
根据您的问题中的查询,这是您的解决方案:
db.profile.aggregate([
{ $match: { userId: ObjectId("5c5d8a0da8625b038ef016e7") } },
{ $lookup: {
from: 'profile',
localField: 'requestIds',
foreignField: 'userId',
as: 'requests' }
}
]);
推荐阅读
- rpm - yum 如何在安装时检查所需的库(依赖问题)
- jakarta-ee - cdi 注入的依赖在生产者方法创建的 bean 中解析为 null
- android - 缓冲区溢出问题
- c# - 使用 Firebase 数据库计算儿童数量的最有效方法
- scala - 保持直到创建 pod java-client Kubernetes
- node.js - 在 Node.js 中调度 CQRS 消息
- selenium - 如何添加 Gradle Kotlin 依赖编译组:'org.seleniumhq.selenium'?
- symfony - 在 Symfony 3.4 Easy Admin bundle 中显示大量实体的总计数
- node.js - 如何使用 POSTMAN 在 Feathers 中测试获取单个 ID
- excel - 使用 Excel 宏在 Outlook 上附加签名