node.js - 使用猫鼬更新对象中数组内的值
问题描述
嗨,我想将我选择的图像的状态更改为“N”
以下是我的json:
{
"_id" : ObjectId("5b9f95c2e7d46ca2bffb8a38"),
"inspection_id" : "00000000dc174c30682f9bdd",
"__v" : 0,
"client_id" : "00000000d080d32e387121bf",
"created_date" : ISODate("2018-09-17T12:44:01.843Z"),
"images" : [
{
"img_name" : "1537185218432-dnIyQ1tL4di9jBmP.png",
"type" : "png",
"file_size" : "6985",
"path" : "/uploads/inspection/00000000d080d32e387121bf/images/1537185218432-dnIyQ1tL4di9jBmP.png",
"status" : "Y",
"_id" : ObjectId("5b9f95c23c4a081a34b4cf1a")
},
{
"img_name" : "1537185451994-FS2yNFcNKhASSHqe.jpg",
"type" : "jpg",
"file_size" : "41341",
"path" : "/uploads/inspection/00000000d080d32e387121bf/images/1537185451994-FS2yNFcNKhASSHqe.jpg",
"status" : "Y",
"_id" : ObjectId("5b9f96ac5700fc07000ee07f")
},
{
"img_name" : "1537186207337-hhz5XrpmH48YW47A.jpg",
"type" : "jpg",
"file_size" : "41341",
"path" : "/uploads/inspection/00000000d080d32e387121bf/images/1537186207337-hhz5XrpmH48YW47A.jpg",
"status" : "N",
"_id" : ObjectId("5b9f999f5700fc07000ee081")
}]
}
我尝试了以下查询:
mongo.inspectionmedia.update({'images._id' : {$in:media_id} }, { $set : { 'images.$.status' : 'N'} },{multi: true},function(err,output){
if(err){
console.log(err)
res.json("err");
}
else{
res.json("ok");
}
});
在 media_id 中,只有那些 id 的状态必须更改的 id 数组。
我的问题是值正在更新,但数组中的第一个值并非全部
解决方案
这听起来像你想使用arrayFilters:
db.inspectionmedia.update({}, {
$set : { 'images.$[i].status' : 'N'}
}, {
multi: true,
arrayFilters: [
{'i._id': { $in:media_id}}
]
}, function(err,output){
if(err){
console.log(err)
res.json("err");
}
else{
res.json("ok");
}
});
推荐阅读
- jquery - jQuery 元素 outerWidth() 返回 0
- reactjs - react native navigation3 我想隐藏底部标签导航的一个标签
- javascript - 我可以从 eventBus 侦听器发送自定义事件吗?
- python - 使用 Stripe 和 Python-Flask 的订阅示例?
- php - 使用foreach时如何只显示一次数据
- wildfly - 消息传输过程中的sccp层问题
- scala - Scala 嵌套函数 - 调用
- amazon-ec2 - 通过 RESTful API 公开的云提供商 SLA
- html - 将 div 中的图像元素居中
- java - 如何在 Spring Boot 中编写 Rest API 以下载资源中存在的 Excel 表?