业火之理 2019-06-23 10:26 采纳率: 100%
浏览 189
已采纳

Mongodb嵌套数组更新失败

文档格式这样:

"_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);
            }
        })
    })
})
  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-03-15 06:15
    关注

    你好!根据你提供的代码和描述,可能出现问题的地方有以下几点:

    1. 可能是参数传递错误。请检查 req.body.dateid 和 req.body.datetime 是否正确地接收到前端传递过来的参数。

    2. 可能是参数类型不一致。在 MongoDB 中,时间格式通常使用 ISODate(),而你在代码中提供的日期格式为字符串,需要将其转换为 ISODate() 格式。可以在 update() 函数中使用 new Date() 来进行转换,例如:

      db.collection('article').update(searchobj, {$pull: {'comment': {'constructdate': new Date(commentdate)}}})
      

    以上两点都可能会导致你在 Node.js 应用程序中无法删除 comment 数组中的数据。希望以上提示对你有所帮助!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 3月15日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装