如何将 ObjectId 数组转换为嵌入文档数组,并让其包含原始数组元素值的字段?
mongodbdatabasebig data analytics更新于 2026/2/13 15:37:17
对于此类转换,请使用聚合函数。让我们创建一个包含文档的集合 −
> db.demo343.insertOne({
... _id: 101,
... UserName: "Chris",
... details: [
... {"Name":"John"},
... {"Name":"David"}
... ]
... }
... );
{ "acknowledged" : true, "insertedId" : 101 }
借助 find() 方法显示集合中的所有文档 −
> db.demo343.find().pretty();
这将产生以下输出 −
{
"_id" : 101,
"UserName" : "Chris",
"details" : [
{
"Name" : "John"
},
{
"Name" : "David"
}
]
}
以下查询将对象数组转换为嵌入文档数组,其中字段包含原始数组元素值 −
> db.demo343.aggregate([
... {
... $addFields: {
... details: {
... $map: {
... input: "$details",
... in: { Name: "$$this" }
... }
... }
... }
... },
... { $out: "demo343" }
... ])
借助 find() 方法显示集合中的所有文档 −
> db.demo343.find().pretty();
这将产生以下输出 −
{
"_id" : 101,
"UserName" : "Chris",
"details" : [
{
"Name" : {
"Name" : "John"
}
},
{
"Name" : {
"Name" : "David"
}
}
]
}

