mongodb - 如何在聚合 Mongodb 中删除包装“[”和“]”?
问题描述
我是学习 MongoDB 的初学者,我在使用聚合从集合中获取结果时遇到问题,我真的希望有人能帮助我:
我的代码:
{
"$project": {
"_id": 0,
"product_id": "$_id",
"product_phone": "$product_phone",
"product_tablet": "$product_tablet",
"product_colors": "$product_colors",
"options": [
{
title: "Mobile Phone",
data: {
$ifNull: [ "$product_phone", null ]
}
},
{
title: "Tablet",
data: {
$ifNull: [ "$product_tablet", null ]
}
},
{
$map: {
input: '$product_colors',
in: {
"title": "$$this.color",
"data": "$$this.photos"
}
}
}
]
}
},
结果是(截图1):
但我想得到这样的结果(截图2):
谁能帮我?
解决方案
$map
返回一个数组,这就是您获得当前结构的原因。你可以做的是用 包裹它$concatArrays
,像这样:
db.collection.aggregate([
{
"$project": {
...
"options": {
"$concatArrays": [
[
{
title: "Mobile Phone",
data: {
$ifNull: [
"$product_phone",
null
]
}
},
{
title: "Tablet",
data: {
$ifNull: [
"$product_tablet",
null
]
}
}
],
{
$map: {
input: "$product_colors",
in: {
"title": "$$this.color",
"data": "$$this.photos"
}
}
}
]
}
}
}
])
推荐阅读
- android - 创建 Android 图标的“添加图像资源”在哪里?
- excel - 未收到 Next 的错误消息
- c# - 调用 WebApi Endpoint 传入对象
- html - 如何在不使用辅助路线的情况下以角度在特定页面上添加侧边菜单
- elasticsearch - 无法按“公司”一词搜索
- c# - 如何将此 UTC 日期时间字符串转换为 DateTime 对象 c#
- c - 为什么打印了两行“输入他们的标记”虽然我只写了一行?
- ios - 使用 Webview 从未知网站获取数据
- javascript - 带有js的数组或者我可以用其他方式吗
- ruby-on-rails - rspec binstub (bin/rspec) 的未初始化常量错误,但 rspec 本身没有