0

Tried to remove multiple records in single call from mongodb using mongoose but not working.Where i want to change in my code.Please help to find solution.

In my code if i use like this.. it is working..

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

but if use below like

({ p_id: { $in: [records_pids] } } it is not working.Because i am getting this array values by api call.

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 });
        }

    })
}
Vimala K
  • 29
  • 1
  • 8

1 Answers1

0
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 });
        }

    })
}

the error is semantic , rather than searching for values $in: [CS1, CS2, CS3], the search is being made as [[CS1, CS2, CS3]] Also,have a look at https://mongoosejs.com/docs/models.html for defining models.

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 }
Ankush Verma
  • 689
  • 1
  • 8
  • 17