我正在尝试在我的数据库中创建以下记录:
{
"userid":
"songs":[
{
"title":
"artist":
}
{
"title":
"artist":
}
]
}
一个用户下可以有多首歌曲。我不确定插入具有多个子记录的记录的正确语法。我尝试使用:
Links.insert({userid: "user1", $push: {songs: {"song1","artist1"}}});
我尝试使用另一个替代方法,即首先创建仅包含userid字段的记录,然后进行更新以将歌曲推送到记录中。但是,当我执行以下操作时出现以下错误:
Links.update({_id: Links.findOne({userid: "user1"})._id, $push: {songs:{"song1","artist1"}}});
未捕获错误:不允许。不受信任的代码只能按ID更新文档。 [403]
我很困惑,因为我使用_id字段来更新记录。关于如何解决这个问题的任何建议?
答案 0 :(得分:1)
您的mongo查询错误。这些应该工作(未经测试):
插入强>
Links.insert({
userid : "user1",
songs : [
{ title : "song1", artist : "artist" },
...
]
});
您无需在insert命令中推送数组。
<强>更新强>
Links.update({
_id : Links.findOne({ userid : "user1" })._id
},
{
"$push" : { title : "song1", artist : "artist" }
});
请注意,Update查询传递了两个对象,一个是selector
,第二个是要应用的modifier
。