【问题标题】:Push a value to an array inside an object in mongoose schema将值推送到猫鼬模式中对象内的数组
【发布时间】:2021-02-09 16:12:05
【问题描述】:

我正在尝试将值推送到 mongoose 模式中的对象内的数组。这是我的架构:

const UserSchema = new mongoose.Schema({
  username: { type: String, required: true, unique: true },
  watchlist: {
    savedMovies: { type: [String] },
    ratings: { type: [Number] },
    avgRating: { type: Number, default: null },
  },
});

我想将一个值推送到监视列表对象内的 savedMovies 数组。我怎样才能做到这一点?我尝试了以下操作。

router.post("/:username/favmovie", async (req: Request, res: Response) => {
  try {
    const user = await User.find({ username: req.params.username }).lean().exec();
    const updatedUser = await User.updateOne({ _id: user[0]._id }, { watchlist: { $addToSet: { savedMovies: req.body.movieID } } });
    res.json(updatedUser);
  } catch (err) {
    res.json({ message: err });
  }
});

但它只是添加了一个新的监视列表对象,这不是我想要的。我只想更新关注列表对象中的 savedMovies 数组。

【问题讨论】:

    标签: mongodb api express mongoose


    【解决方案1】:

    试试这个 -

    db.usersdata.update({
      "_id": 1.0
    },
    {
           $addToSet: { "watchlist.savedMovies": "Movies4" } 
    })
    

    Mongo Playground

    【讨论】:

    • 它给出了一个 Property assignment expected.ts(1136) 错误。但是,不幸的是,当我删除多余的 {} 标记时它也不起作用。
    • 我的错..非常抱歉。从错误的窗口粘贴查询。我正在更新答案。
    • 已更新。请立即尝试。
    猜你喜欢
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 2015-02-12
    • 2019-10-30
    • 2016-02-28
    • 2018-09-19
    相关资源
    最近更新 更多