如何更新嵌套数组MongoDb Node js中的必填字段[重复]
Posted
技术标签:
【中文标题】如何更新嵌套数组MongoDb Node js中的必填字段[重复]【英文标题】:How can I update required field in nested array MongoDb Node js [duplicate] 【发布时间】:2019-06-04 09:03:50 【问题描述】:如何查找和更新数据数组中的字段
"_id" : ObjectId("5bfe6df9777d13255bb2ad7c"),
"program_id" : ObjectId("5b7bcc8520a2b13177b4d92e"),
"week_id" : "2018.10.48",
"month" : 10.0,
"week_count" : 48.0,
"year" : 2018.0,
"data" : [
"_id" : ObjectId("5bfe6df9c1e35824dfcce39f"),
"date" : 27.0,
"user_ids" : [
"checkin_time" : 1543400937337.0,
"by" : ObjectId("5bb2aa12460b5f2ef97388e6"),
"checkin_by" : ObjectId("5bf7dd8387550226071eda5c"),
"checkin_status" : 1.0,
"point" : 1.0
,
"checkin_time" : 1543400937337.0,
"by" : ObjectId("5bb453b44817792ec972c1ab"),
"checkin_by" : ObjectId("5be7dd8387550226071eda5c"),
"user_utc_checkin_time" : 1543401130940.0,
"user_time_zone" : "Asia/Kolkata",
"checkin_status" : 1.0,
"point" : 1.0
,
"checkin_time" : 1543400937337.0,
"by" : ObjectId("5bed113bcd1c075e045aa79e"),
"checkin_by" : ObjectId("5bed113bcd1c075e045aa79e"),
"user_utc_checkin_time" : 1543401594869.0,
"user_time_zone" : "Asia/Kolkata",
"checkin_status" : 1.0,
"point" : 1.0
]
]
我正在使用
db.collectionName.findAndUpdate(
"data.user_ids.checkin_by":mongoose.Types.ObjectId(a) ,
$set :
"data.user_ids.$.checkin_status":2
)
【问题讨论】:
【参考方案1】:试试这个:
db.collectionName.update(
"data.user_ids.checkin_by":mongoose.Types.ObjectId(a) ,
"$set":"data.user_ids.$.checkin_status":2
)
【讨论】:
不,它不工作 使用这段代码会发生什么? "msg": "internal Server Error", "err": "name": "MongoError", "message": "不能使用部分(data.user_ids.0.checkin_status的数据) 遍历元素 (data: [ date: \"\", user_ids: ... 这对我有用 CheckInDao.findAndUpdate( $and:[ "_id":mongoose.Types.ObjectId("5c3635b00f62312e2412e124"), "data.0.user_ids.checkin_by": mongoose.Types.ObjectId("5c002ac43716336b67bd7726") ], // , $set : "data.0.user_ids.$.checkin_status":11 );但我仍然不能说服,因为我必须使用 data.o.user_ids 尝试在数据后使用 $ 而不是 0以上是关于如何更新嵌套数组MongoDb Node js中的必填字段[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 mongodb 和 node js 更新和拉取用户
如何使用node.js中的循环将表单数据保存为对象和对象数组到mongodb?