如何使用猫鼬删除nodejs中的多条记录

Posted

技术标签:

【中文标题】如何使用猫鼬删除nodejs中的多条记录【英文标题】:How to remove multiple records in nodejs using mongoose 【发布时间】:2020-09-11 07:54:54 【问题描述】:

尝试使用 mongoose 从 mongodb 的单个调用中删除多个记录,但无法正常工作。我想更改代码的位置。请帮助找到解决方案。

在我的代码中,如果我这样使用..它正在工作..

( p_id: $in: ['Cs1', 'Cs2', 'Cs3']

但是如果像下面这样使用

( p_id: $in: [records_pids] 它不起作用。因为我通过 api 调用获取此数组值。

MongoDB:


 p_id:"Cs1",
 name:"Test",
 value:"Power"
,

 p_id:"Cs2",
 name:"Test",
 value:"Power"
,

 p_id:"Cs3",
 name:"Test",
 value:"Power"
,

 p_id:"Cs4",
 name:"Test",
 value:"Power"
,

 p_id:"Cs5",
 name:"Test",
 value:"Power"

data.controller.js:

 module.exports.deleteMultipleRecord = (req, res, next) => 
    var collectionMDName = req.query.collectionname;
    var records_pids = req.query.pids; //Array value Cs1, Cs2, Cs3

    var tableMDModal = mongoose.model(collectionMDName);
    tableMDModal.deleteMany( p_id:  $in: [records_pids]  , function(err, docs) 
        if (err) 
            console.log('ss' + err);
            return
         else 
            console.log("Successful deleted selected records");
            res.json( data: docs, success: true, msg: 'Successful deleted selected records.', cname: collectionMDName );
        

    )

【问题讨论】:

这能回答你的问题吗? Mongoose - remove multiple documents in one function call @taha: 我已经看过那个链接但是没用..我不知道怎么用 你看到了什么错误。如果您没有看到任何记录,请console.log tableMDModal.find 获取相同的记录。 @AnkushVerma:我不知道..哪种语法是正确的 如果 Records_pids 已经是一个数组,那么去掉 [] 【参考方案1】:
module.exports.deleteMultipleRecord = (req, res, next) => 
    var collectionMDName = req.query.collectionname;
    var records_pids = req.query.pids; //Array value CS1, CS2, CS3

    var tableMDModal = mongoose.model(collectionMDName);
    tableMDModal.deleteMany( p_id:  $in: records_pids  , function(err, docs) 
        if (err) 
            console.log('ss' + err);
            return
         else 
            console.log("Successful deleted selected records");
            res.json( data: docs, success: true, msg: 'Successful deleted selected records.', cname: collectionMDName );
        

    )

错误是语义错误,而不是搜索值 $in: [CS1, CS2, CS3],搜索是 [[CS1, CS2, CS3]] 另外,请查看https://mongoosejs.com/docs/models.html 以定义模型。

MongoDB Enterprise Cluster0-shard-0:PRIMARY> use new
switched to db new
MongoDB Enterprise Cluster0-shard-0:PRIMARY> use neo
switched to db neo
MongoDB Enterprise Cluster0-shard-0:PRIMARY> db.coll.insertMany([  p_id:"Cs1",  name:"Test",  value:"Power" ,   p_id:"Cs2",  name:"Test",  value:"Power" ,   p_id:"Cs3",  name:"Test",  value:"Power" ,   p_id:"Cs4",  name:"Test",  value:"Power" ,   p_id:"Cs5",  name:"Test",  value:"Power" ])

    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("5ecb90001a40be1d77da2aa8"),
        ObjectId("5ecb90001a40be1d77da2aa9"),
        ObjectId("5ecb90001a40be1d77da2aaa"),
        ObjectId("5ecb90001a40be1d77da2aab"),
        ObjectId("5ecb90001a40be1d77da2aac")
    ]

MongoDB Enterprise Cluster0-shard-0:PRIMARY> const records_id =["Cs1","Cs2","Cs3"]
MongoDB Enterprise Cluster0-shard-0:PRIMARY> db.coll.deleteMany(p_id:$in:records_id)
 "acknowledged" : true, "deletedCount" : 3 

【讨论】:

您介意指定它何时不工作吗? @Vimala K 我只能删除一条记录 我无法删除多条记录 它在语义上是正确的,也许打印tableMDModal.find( p_id: $in: records_pids ,看看你得到了什么 如果我尝试删除多条记录,我会收到此错误:CastError: Cast to string failed for value " records_pids: 'Cs1,Cs2,Cs3' " at path "p_id" for model

以上是关于如何使用猫鼬删除nodejs中的多条记录的主要内容,如果未能解决你的问题,请参考以下文章

如何使用猫鼬正确塑造发送到 NodeJS 服务器的搜索日期

如何使用php和ajax删除多条记录

如何使用 Entity Framework ASP.Net MVC 5 删除多条记录? [关闭]

使用 sequelize 和 nodejs 更新多条记录?

如何在 NodeJS 的任何猫鼬模型中使用数组?

如何在 nodejs 上安装猫鼬驱动程序?