我希望在文档与Url中输入的用户ID匹配时更新文档,如果它不存在则插入它。我的代码更新工作正常,但插入有一些问题,因为我匹配_id与给予更新。那么有没有其他方法来匹配文档中的用户ID与给定的用户ID? 有人帮我解决这个问题。 以下是我的代码:
var p = Dbs.findOne({ user_id: Router.current().params._id });
Dbs.update({ _id: p._id }, {
$set: {
user_id: user_id1,
cont: cont1,
add: add1,
pth: pth1
}
},
{upsert:true}
);
我尝试使用{User_id:p._id}代替{_id:p._id},但它不起作用。
答案 0 :(得分:1)
如果我正确理解您的问题,您只想在user_id
而不是_id
上进行匹配。然后在你的选择器中使用它:
Dbs.update({ user_id: your_user_id_value },
{
$set: {
user_id: user_id1,
cont: cont1,
add: add1,
pth: pth1
}
},
{ upsert: true}
);
如果只找到一个文档,这将有效。如果匹配找到多个文档,则只会修改第一个文档,除非您还在选项中指定了multi: true
。另请注意,此代码仅适用于服务器。