将值推送到猫鼬模式中对象内的数组

Posted

技术标签:

【中文标题】将值推送到猫鼬模式中对象内的数组【英文标题】: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 数组。

【问题讨论】:

【参考方案1】:

试试这个 -

db.usersdata.update(
  "_id": 1.0
,

       $addToSet:  "watchlist.savedMovies": "Movies4"  
)

Mongo Playground

【讨论】:

它给出了一个 Property assignment expected.ts(1136) 错误。但是,不幸的是,当我删除多余的 标记时它也不起作用。 我的错..非常抱歉。从错误的窗口粘贴查询。我正在更新答案。 已更新。请立即尝试。

以上是关于将值推送到猫鼬模式中对象内的数组的主要内容,如果未能解决你的问题,请参考以下文章

将值推送到辅助数组javascript

如何将值推送到 Cypher 中的属性数组?

如何将值推送到 QML 属性变量二维数组 - 动态?

如何按键过滤数组并使用javascript将值推送到另一个数组

如果它是一个函数,则将值推送到 javascript 数组的问题

将值推送到复选框或单选更改上的数组的功能