Mongodb$推入式嵌套数组

Mongodb$推入式嵌套数组,mongodb,mongodb-php,Mongodb,Mongodb Php,我想在嵌套数组中添加新数据 我的文件是: { “用户名”:“埃尔金”, “电子邮件”:“埃尔金”-07@hotmail.com", “密码”:“b”, “播放列表”:[ { “_id”:58, “名称”:“asdsa”, “日期”:“09-01-15”, “音乐”:[ { “名称”:“INNA-Cola Song(feat.J Balvin)”, “持续时间”:“3.00” }, { “名称”:“布拉布拉”, “持续时间”:“3.00” } ] } ] } 我想在此播放列表部分添加音乐: {

我想在嵌套数组中添加新数据

我的文件是:

{
“用户名”:“埃尔金”,
“电子邮件”:“埃尔金”-07@hotmail.com",
“密码”:“b”,
“播放列表”:[
{
“_id”:58,
“名称”:“asdsa”,
“日期”:“09-01-15”,
“音乐”:[
{
“名称”:“INNA-Cola Song(feat.J Balvin)”,
“持续时间”:“3.00”
},
{
“名称”:“布拉布拉”,
“持续时间”:“3.00”
}
]
}
]
}
我想在此播放列表部分添加音乐:

{
“用户名”:“埃尔金”,
“电子邮件”:“埃尔金”-07@hotmail.com",
“密码”:“b”,
“播放列表”:[
{
“_id”:58,
“名称”:“asdsa”,
“日期”:“09-01-15”,
“音乐”:[
{
“名称”:“INNA-Cola Song(feat.J Balvin)”,
“持续时间”:“3.00”
},
{
“名称”:“布拉布拉”,
“持续时间”:“3.00”
},
{
“名称”:“新”,
“持续时间”:“3.00”
}
]
}
]
}
以下是我尝试过的:

$users->更新(
排列(
''u id'=>新的MongoId(会话::get('id'),
'播放列表。_id'=>$playlaid
),
排列(
“$push”=>array('playlists.music'=>array(
“名称”=>“新记录”,
“持续时间”=>“3.00”
))
)
);

可能是这样的,其中ID是您的ObjectId。第一个{}是标识文档所必需的。只要集合中有另一个唯一标识符,就不需要使用ObjectId

db.collection.update(
    { "_id": ID, "playlists._id": "58"},
    { "$push": 
        {"playlists.$.musics": 
            {
                "name": "test name",
                "duration": "4.00"
            }
        }
    }
)

这样我就成功了

“播放列表$[]音乐”:

db.collection.update(
{ "_id": ID, "playlists._id": "58"},
{ "$push": 
    {"playlists.$[].musics": 
        {
            "name": "test name",
            "duration": "4.00"
        }
    }
 }
)

我只是想告诉你人们在这里投票反对或投票结束的原因。在问题中张贴代码的相关部分。不要在外部链接(可能会中断),也不要让我们阅读冗长的列表来了解您所谈论的内容。读这个:嗨。您没有指定播放列表id。我每个月有多个播放列表user@balkondemiri那是可能的。我无法测试它,所以这是一个猜测。尽管如此,它还是应该让您找到正确的方向。Mongodb控制台会说“异常:语法错误:意外令牌”。@balkondemiri
”播放列表。_id“
键需要“引用”,就像我在这里所做的一样。这只是答案中的一个语法错误。最好在对象定义中“引用”所有键。JavaScript允许您在不使用引号的情况下执行“有效”的操作,但是真正的JSON需要带引号的键。谢谢大家。我更新我的查询。{“_id”:ObjectId(“54ad6c115e03635c0c000029”),“playlists._id”:58}这将在“playlists”实体的所有数组元素中推送新记录。