database - MongoDB - 从聚合查询中获取单个元素
问题描述
我正在使用以下聚合查询:
db.posts.aggregate([
{
$lookup: {
from: "profiles",
localField: "user",
foreignField: "user",
as: "userDetails"
}
}
])
它返回如下所示的结果:
{
"_id" : ObjectId("5d1523b98d9dd16d832a8c5e"),
"user" : ObjectId("5d1504e29dc0bd55461adca7"),
"recipeName" : "Pizza",
"ingredients" : "Flour and sauce",
"userDetails" : [
{
"_id" : ObjectId("5d1505089dc0bd55461adca8"),
"user" : ObjectId("5d1504e29dc0bd55461adca7"),
"handle" : "jack",
"status" : "Developer"
}
]
}
这包括整个“配置文件”作为称为“userDetails”的键。但是,我不想要所有这些信息。我只需要用户的句柄。我希望结果看起来完全像这样:
{
"_id" : ObjectId("5d1523b98d9dd16d832a8c5e"),
"user" : ObjectId("5d1504e29dc0bd55461adca7"),
"recipeName" : "Pizza",
"ingredients" : "Flour and sauce",
"handle" : "jack"
}
我怎样才能做到这一点?
解决方案
所以,你可以试试这个查询:
db.posts.aggregate([{$lookup: {from: "profiles",
localField: "user",foreignField: "user",as: "userDetails"
}},{'$unwind':'$userDetails'},
{$project:{ '_id':1, 'user':1, 'recipeName':1, 'ingredients':1, 'handle':'$userDetails.handle'}}]);
推荐阅读
- php - Activecollab 自托管帐户 API 身份验证无效响应
- android - 在 Android 中编辑图像
- swift - 将新 UITableView 单元格的 textField 设为 firstResponder
- python - Flask:如何使用第二个查询获取参数,该参数用于第一个查询调用的函数?
- python - Python:将 AJAX 响应数据保存到 .json 并将其保存到 pandas DataFrame
- mongodb - MongoDB:如何从生成 oplog 中排除集合
- python-3.x - 如何使用 Selenium 和 Python 从 div 标签中抓取字符串?
- mysql - 为什么我的 UPDATE DATE() 查询在 WHERE 失败?
- c++ - 如何动态修改嵌套的 rapidjson 对象?
- python-3.x - 从路径导入文件