arrays - Mongodb - 如何只返回数组中的项目?
问题描述
数据结构的格式:
[
{
"related": [
{
"_id": "xxvxcv",
"price": "5266",
"title": "Title 1"
},
{
"_id": "fggfd",
"price": "5266",
"title": "Title 2"
}
]
}
]
现在,我只想Obj
从related
数组中返回。
我想删除related
密钥并仅返回其中存在的项目。
预期输出应该是这样的:
[
{
"_id": "xxvxcv",
"price": "5266",
"title": "Title 1"
},
{
"_id": "fggfd",
"price": "5266",
"title": "Title 2"
}
]
我的聚合应该是什么?任何建议
db.collection.aggregate([ ..?? ])
解决方案
$unwind
:从输入文档中解构一个数组字段,为每个元素输出一个文档。
$replaceRoot
:用指定的文档替换输入文档。
db.collection.aggregate([
{
$unwind: "$related"
},
{
$replaceRoot: {
newRoot: "$related"
}
}
])
输出
[
{
"_id": "xxvxcv",
"price": "5266",
"title": "Title 1"
},
{
"_id": "fggfd",
"price": "5266",
"title": "Title 2"
}
]
推荐阅读
- excel - Excel 数据翻译 - INDEX、MATCH、OFFSET?
- javascript - react native导航中header组件的调用函数
- qt - QWidget 多种样式无法正常工作
- excel - 尝试将记录集分配给数组时出现错误“BOF 或 EOF 为真......”
- .net - 是否可以在应用程序启动时强制 Serilog.Sink.File 启动一个新的日志文件?
- sql - DBMail到Outlook的vb6 vs SQL脚本,出了什么问题?
- php - 使用嵌套 for 循环显示数据
- c# - 在新桌面中启动进程
- html - 如何让我的背景处于固定位置?
- php - Laravel 进程组件安全问题?