0

this is my mongo doc :

{
    "_id" : ObjectId("51f22f6784aefaa97d7e533e"),
    "group_name" : "demo",
    "privileges" : [
        "User Group",
        "Profile Images",
        "Advertisement"
    ],
    "users" : [
        {
            "full_name" : "aap",
            "password" : "as",
            "status" : "Active",
            "user_name" : "as"
        },
        {
            "full_name" : "b",
            "user_name" : "b",
            "password" : "b",
            "status" : "Active"
        },
        {
            "full_name" : "prashant",
            "user_name" : "pt123",
            "status" : "Active"
        }
    ]
}

I want to find all records having "group_name":"demo" delete particular record having "user_name":"pt123" form users array. I have tried

 db.users.update({"group_name":"demo"}, {$pull:{"users.user_name":"pt123"}})

but showing no effect. Where am i lacking? Please Help My java code is

BasicDBObject del = new BasicDBObject("group_name", z);
del.put("users.user_name", x);
BasicDBObject delquery=new BasicDBObject("$match",del);
con.remove(delquery);

2 Answers 2

2

Here's working query for you:

db.users.update({"group_name":"demo"}, {$pull: {"users":{"user_name":"pt123"}}})
Sign up to request clarification or add additional context in comments.

Comments

1
      BasicDBObject sq = new BasicDBObject("group_name", z);
      BasicDBObject idoc=new BasicDBObject("user_name",x);
      BasicDBObject odoc =new BasicDBObject("users",idoc);
      BasicDBObject delq=new BasicDBObject("$pull",odoc);
      con.coll.update(sq, delq);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.