Unset from document inside array in MongoDB

Lets say i have a group_members document like

> "_id" : ObjectId("59969a5b421aa92f5a6cf5fa"),
> "inserted_at" : "2017-08-18T07:42:19.332000Z",
> "referrers" : [
> 		{
> 			"referrer_id" : ObjectId("59705daa421aa94043b32721"),
>           "alias_name" : "john"
> 		},
> 		{
> 			"referrer_id" : ObjectId("5970698f421aa9404373c493")
>           "alias_name" : "mery"
> 		}
> 	],
> 	"user" : {
> 		"name" : "abcd",
> 		"phone" : "9876543210",
> 		"user_id" : ObjectId("59706850421aa94043a570c3")
> 	}

Now i need to unset only that match %{referrers: %{referrer_id: ObjectId("5970698f421aa9404373c493")}} .

I tried db.group_members.update({ "_id": ObjectId("59969a5b421aa92f5a6cf5fa") }, {$unset: {"referrers": {"referrer_id": ObjectId("59705daa421aa94043b32721")}}}, false, true) but this is deleting complete referrers. But i want to delete referrer_id that matches only. How can i do this??

$pull instead of $unset solved my problem. thank you :slight_smile:

2 Likes