node.js - MongoError:无法将 $addToSet 应用于非数组字段。名为“trackTime”的字段具有非数组类型字符串
问题描述
在这里,我正在尝试使用userid, trackTime
字段进行更新。Evertime 用户 ID 和 trackTime 会有所不同,所以我正在使用$addToSet
,但在这里我遇到了一个错误
像这样我在邮递员中传递数据:-
{
"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
}})
解决方案
该错误的原因可能是因为您没有指定数组字段(实际上您根本没有指定任何字段)。尝试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/
推荐阅读
- excel - 循环相对参考
- ruby-on-rails-5 - Rails 和分配关联对象
- swiftui - SwiftUI tvOS 按钮/导航链接 .focusable()
- php - Laravel-echo-server, net::ERR_CONNECTION_TIMED_OUT 在 laravel echo redis 服务器中
- c++ - 填字游戏出现错误:'operator==' 不匹配
- javascript - 访问存储在 React 组件状态中的先前数据的问题
- mongodb - mongoose.Schema.Types.ObjectId 做什么
- r - 如何从 Rcpp 调用 R 函数(不应导出)?
- tcl - 如何对列表进行排序,如果列表元素重复,则在 tcl 中添加与该元素关联的值
- pandas - pandas 获得 np.where 的一列或另一列替代