mongoerror:无法将$addtoset应用于非数组字段名为“tracktime”的字段具有非数组类型字符串

vawmfj5a  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(263)

在这里,我试图用 userid, trackTime 领域。evertime用户ID和tracktime将不同,因此我使用 $addToSet 但这里我面临一个错误
就像这样,我在 Postman 中传递数据:-

{
 "courseId":"61001184afeacb22ac1668e0",
 "userId":"60f6fe96a1a44a1fb4a59573",
 "trackingTime":"4"
}

这是模式:-

usersEnrolled : [{
    iscourseenrolled : { type:Boolean, default: false },
    userId: {type: String },
    trackTime: {type:String}
 }],

代码:-

const updatedTrackTime = await Courses.updateOne({ "_id" : req.body.courseId},{
  $addToSet:{
    "usersEnrolled.0.userId" : req.body.userId,
    "usersEnrolled.0.trackTime": req.body.trackingTime 
 }})
pbpqsu0x

pbpqsu0x1#

该错误的原因可能是因为您没有指定数组字段(实际上您根本没有指定任何字段)。尝试添加您的 usersEnrolled 像这样的领域:

const updatedTrackTime = await Courses.updateOne({ "_id" : req.body.courseId},{
  $addToSet:{
    usersEnrolled: {
      "usersEnrolled.0.userId" : req.body.userId,
      "usersEnrolled.0.trackTime": req.body.trackingTime
    }
 }});

了解更多关于 $addToSet 使用mongodb手册https://docs.mongodb.com/manual/reference/operator/update/addtoset/

相关问题