文档格式这样:
"_id" : ObjectId("5cffbbf4d868b7af240d679e"),
"dateid":"1560263668115",
"comment" : [
{
"user" : "yyyyyy",
"content" : "213123",
"constructdate" : "2019-06-22 07:02:08.688"
},
{
"user" : "kkkk",
"content" : "213gggg123",
"constructdate" : "2019-06-22 07:02:08.687"
}
]
我在终端上操作以下代码可以工作,能删除满足条件的comment更新文档
db.getCollection('article').update({'dateid':'1560263668115'},{$pull:{"comment":{"constructdate" : "2019-06-22 07:02:08.687"}}})
我在Nodejs上代码如下
删除操作返回result: { n: 0, nModified: 0, ok: 1 }
数据没删掉
将收到的req.body.datetime复制进终端也能操作成功。
app.post('/articledetail/api/delmessage',(req,res)=>{
console.log(req.body);
let ariticledate=req.body.dateid;
let commentdate=req.body.datetime;
let searchobj={'dateid':ariticledate};
let searchcallback=function(data){
return res.send('success');
}
let noresultcallback=function () {
return res.send("err");
}
MongoClient.connect(dburl,function(err,db){
if(err){return}
db.collection('aricle').update(searchobj,{$pull:{'comment':{'constructdate' : commentdate}}},function(err,data){
if(err){db.close();noresultcallback(err)}
if(data){
console.log(data);
db.close();
searchcallback(data);
}else{
db.close();
noresultcallback(data);
}
})
})
})
你好!根据你提供的代码和描述,可能出现问题的地方有以下几点:
可能是参数传递错误。请检查 req.body.dateid 和 req.body.datetime 是否正确地接收到前端传递过来的参数。
可能是参数类型不一致。在 MongoDB 中,时间格式通常使用 ISODate(),而你在代码中提供的日期格式为字符串,需要将其转换为 ISODate() 格式。可以在 update() 函数中使用 new Date() 来进行转换,例如:
db.collection('article').update(searchobj, {$pull: {'comment': {'constructdate': new Date(commentdate)}}})
以上两点都可能会导致你在 Node.js 应用程序中无法删除 comment 数组中的数据。希望以上提示对你有所帮助!