user3803096
user3803096

Reputation: 901

Update a Nested Array in MongoDB

I have many company documents like this:

{
 "name" : "testCompany",
 "code" : "150",
 "access" : [ 
    {
        "name" : "x",
        "role" : "admin"
    }, 
    {
        "name" : "y",
        "role" : "User"
    }, 
    {
        "name" : "z",
        "role" : "User"
    }
   ]
 }

I want to find a company which has the code value of '150'. And then remove the access with name of 'z'. I wrote this, but it didn't work. I don't get any errors:

collection.update(
{code: req.body.companyCode }, 
{$pull: {"access.$.name":  req.body.username}}, 
function(err, results) {
                res.send({error: err, affected: results});
                db.close();
            });

Any ideas?

Upvotes: 0

Views: 47

Answers (1)

Sid Zhang
Sid Zhang

Reputation: 972

Not familiar with node, but I think it should be:

collection.update(
{code: req.body.companyCode }, 
{$pull: {"access": {"name": req.body.username}}}, 
function(err, results) {
                res.send({error: err, affected: results});
                db.close();
            });

Upvotes: 1

Related Questions