MongoDB- 如何从对象中 $project 项目?
MongoDB- How to $project items from an object?
游乐场 https://mongoplayground.net/p/tIMLOtWTnno
数据:
[
{
"_id": "1",
"data": { // How to remove this "data" Field
"colour": "Blue",
"size": "12",
}
},
{
"_id": "2",
"data": { // How to remove this "data" Field
"colour": "Silver",
"size": "20",
}
}
]
我想删除 data
字段。
预期输出:
[
{
"_id": "1",
"colour": "Blue",
"size": "12",
},
{
"_id": "2",
"colour": "Silver",
"size": "20",
}
]
这样试过:
db.collection.aggregate({
$project: {
_id: 1,
data: {
$objectToArray: "$data"
}
},
},
{
$unwind: "$data"
},
{
$project: {
"$data.k": "$data.v"
}
})
怎么做?
查询 1
- 设置在根中添加字段并删除数据
*您也可以使用项目
aggregate(
[{"$set":
{"colour":"$data.colour",
"size":"$data.size",
"data":"$$REMOVE"}}])
查询2
- 更通用的解决方案,无需在项目中键入每个字段
- 将数据嵌入对象与根合并,使其成为新的根
- 删除数据字段
aggregate(
[{"$replaceRoot":{"newRoot":{"$mergeObjects":["$data", "$$ROOT"]}}},
{"$project":{"data":0}}])
游乐场 https://mongoplayground.net/p/tIMLOtWTnno
数据:
[
{
"_id": "1",
"data": { // How to remove this "data" Field
"colour": "Blue",
"size": "12",
}
},
{
"_id": "2",
"data": { // How to remove this "data" Field
"colour": "Silver",
"size": "20",
}
}
]
我想删除 data
字段。
预期输出:
[
{
"_id": "1",
"colour": "Blue",
"size": "12",
},
{
"_id": "2",
"colour": "Silver",
"size": "20",
}
]
这样试过:
db.collection.aggregate({
$project: {
_id: 1,
data: {
$objectToArray: "$data"
}
},
},
{
$unwind: "$data"
},
{
$project: {
"$data.k": "$data.v"
}
})
怎么做?
查询 1
- 设置在根中添加字段并删除数据
*您也可以使用项目
aggregate(
[{"$set":
{"colour":"$data.colour",
"size":"$data.size",
"data":"$$REMOVE"}}])
查询2
- 更通用的解决方案,无需在项目中键入每个字段
- 将数据嵌入对象与根合并,使其成为新的根
- 删除数据字段
aggregate(
[{"$replaceRoot":{"newRoot":{"$mergeObjects":["$data", "$$ROOT"]}}},
{"$project":{"data":0}}])