Mongodb 按记录分组,生成新的ObjectId,并更改结果集结构
我正在制作一个包含乐队和流派记录的音乐数据库,每个乐队都有多种流派。 我从CSV导入了数据,并获得了一个如下所示的集合: 我现在打算做的是创建一个新的流派集合,这是通过Mongodb 按记录分组,生成新的ObjectId,并更改结果集结构,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我正在制作一个包含乐队和流派记录的音乐数据库,每个乐队都有多种流派。 我从CSV导入了数据,并获得了一个如下所示的集合: 我现在打算做的是创建一个新的流派集合,这是通过流派名称聚合此集合的结果,允许将不同类型的流派分开放置 为此,我成功创建了以下聚合操作: db.tempBandGenres.aggregate([ { $group: { _id: { name: "$genre_name"
流派名称
聚合此集合的结果,允许将不同类型的流派分开放置
为此,我成功创建了以下聚合操作:
db.tempBandGenres.aggregate([
{
$group: {
_id: {
name: "$genre_name"
}
}
},
{
$out: "genres"
}
])
正如预期的那样,这将输出一组表示流派的文档:
现在有两件事我想做,但不知道如何做:向流派集合中的每条记录添加一个新的ObjectId
,并更改每个文档的结构,使name
属性不是\u id
元素的一部分,而是根元素的一个属性
因此,最终收集的记录示例如下:
谢谢您只需在$out之前构建结果
按$group
)进行分组并首先获取流派(名称
\u id
显示必填字段$project
谢谢你的回复。这个建议让我解决了身份证问题!但是关于结构,我现在有了一个name对象,其中包含一个子name,在$project阶段改为name:“$\u id.id”,解决了第二个问题!感谢您必须查看我使用的
$group
阶段\u id:“$genre\u name”
它应该可以工作
db.tempBandGenres.aggregate([
{
$group: {
_id: "$genre_name",
id: { $first: "$_id" }
}
},
{
$project: {
_id: "$id",
name: "$_id"
}
},
{ $out: "genres" }
])