我有以下doc方案:
{
"_id": 123123123,
"linhas": [1,2,3]
}
我希望所有人都转向以下方案:
{
"_id": 123123123,
"linhas": [{
"id":1,
"duracao": 14
},{
"id":2,
"duracao": 14
},{
"id":3,
"duracao": 14
}]
}
换句话说,我希望数组中的所有数字都变成同一数组中的对象ID。我怎么能用mongo查询呢?
答案 0 :(得分:2)
您可以使用.aggregate()
方法,如下所示:
db.collection.aggregate([
{ "$unwind": "$linhas" },
{ "$group": {
"_id": "$_id",
"linhas": {
"$push": {
"id": "$linhas",
"duracao": { "$literal": 14 }
}
}
}}
])
返回:
{
"_id" : 123123123,
"linhas" : [
{
"id" : 1,
"duracao" : 14
},
{
"id" : 2,
"duracao" : 14
},
{
"id" : 3,
"duracao" : 14
}
]
}
你需要解构你的" linhas"数组使用$unwind
运算符然后$group
您的文档由" _id"并使用$push
累加器运算符返回子文档数组。当然$literal
运算符允许您设置新字段的值" duracao"。