业火之理 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日

悬赏问题

  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条