如何通过匹配用户ID(如果存在)来更新mongo db中的文档,如果在meteor中使用upsert,则插入if不存在?

时间:2017-09-19 12:36:59

标签: mongodb meteor

我希望在文档与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},但它不起作用。

1 个答案:

答案 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。另请注意,此代码仅适用于服务器。