Removing a subdocument from a document

1,709 views
Skip to first unread message

Kiri

unread,
May 20, 2011, 2:01:47 PM5/20/11
to mongodb-user
Hi,

I am trying to remove a subdocument but I couldn't figure out how to
do it.

For example, I have this document:

{ "_id" : ObjectId("4dd67fcfc27fd16665a61db6"), "mid" :
NumberLong(1284), "sqn" : 1, "ts" :
ISODate("2011-05-05T19:19:57.667Z"), "values" : { "401" : 6.521,
"402" : 36.1499, "403" : -6.833, "404" : 23.6642, "405" : 226.566,
"406" : 0.045 } }

and I want to remove the document inside values ("401" : 6.521) and
finally my document would be

{ "_id" : ObjectId("4dd67fcfc27fd16665a61db6"), "mid" :
NumberLong(1284), "sqn" : 1, "ts" :
ISODate("2011-05-05T19:19:57.667Z"), "values" : { "402" : 36.1499,
"403" : -6.833, "404" : 23.6642, "405" : 226.566, "406" : 0.045 } }

Thanks for advance!!

Andreas Jung

unread,
May 20, 2011, 2:16:02 PM5/20/11
to mongod...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Well, google:
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQGUBAEBAgAGBQJN1q/hAAoJEADcfz7u4AZjaRALvRauPrq+uyE0IpWaXcYHQIJx
BP7Nwj6dElkyb5CWnEeGOyjtUzw7B+xc61PPUNzCFbK+gHE92qDHGy9ll7JrE+Cw
2rm+ZEdR6Wifq3YA/4RcsKsFB7JbztVurQ4iQBe3Vvy5beLuAAhATW/vBfW91JUe
1BcL99FEJi9zTYtpKX/kJw5T3Lc/fdGV3ynoWhujj2HPt3fLMmXhs0cWjLh7kdC/
4XZJLxEZdtReIUTjOmGTNQh/mM0zhImI1+KPoLXp/nXA4dLZsXjdBdkglaV+bAeR
ONiRYki8Dk7y5tTUwgDe/foFheVEWQzU7b6LN1gqVverW/Wdls7ZvSkycfFCvEiM
H8OUQVgULviSEwtVB6F8EeHc+BMlT7+ET2pEM15s082sxU7KmmBxGqi+Zhs3ySRZ
t34o6HQcChzlD4lJhYYu8QY9Ss4PCZJo7QD6Z8mdIWWWZDhESs76mz1pg/f0V8d4
mZB/SK81mD5RGYZoxxbTGg5oAj8fG6M=
=6Goa
-----END PGP SIGNATURE-----

lists.vcf

Andreas Jung

unread,
May 20, 2011, 2:16:30 PM5/20/11
to mongod...@googlegroups.com
lists.vcf

Robert Stam

unread,
May 20, 2011, 2:26:20 PM5/20/11
to mongodb-user
You can delete an element from a nested document using $unset:

> db.test.find()
{ "_id" : ObjectId("4dd67fcfc27fd16665a61db6"), "mid" :
NumberLong(1284), "sqn" : 1, "ts" : ISODate("2011-05-05T19:19:57
.667Z"), "values" : { "401" : 6.521, "402" : 36.1499, "403" : -6.833,
"404" : 23.6642, "405" : 226.566, "406" : 0.045 }
}
> db.test.update({"_id" : ObjectId("4dd67fcfc27fd16665a61db6")}, {$unset: {"values.401":1}})
> db.test.find()
{ "_id" : ObjectId("4dd67fcfc27fd16665a61db6"), "mid" :
NumberLong(1284), "sqn" : 1, "ts" : ISODate("2011-05-05T19:19:57
.667Z"), "values" : { "402" : 36.1499, "403" : -6.833, "404" :
23.6642, "405" : 226.566, "406" : 0.045 } }
>

On May 20, 2:16 pm, Andreas Jung <li...@zopyx.com> wrote:
> http://stackoverflow.com/questions/4483897/mongodb-php-delete-element...
>
>  lists.vcf
> < 1KViewDownload

Gates

unread,
May 20, 2011, 3:01:10 PM5/20/11
to mongodb-user
@Kiri: You are looking for the $unset operator.
http://www.mongodb.org/display/DOCS/Updating#Updating-%24unset

In your case it will be something like:

update( { "_id" : ObjectId("4dd67fcfc27fd16665a61db6") },
{ $unset: { 'values.401' } } )

Notice the use of dot notation for 'values.401'.

- Gates

Kiri

unread,
May 20, 2011, 7:14:42 PM5/20/11
to mongodb-user
Thanks to all! :)

I thought that $unset would set null "values.401' :)

On 20 mayo, 21:01, Gates <ga...@10gen.com> wrote:
> @Kiri: You are looking for the $unset operator.http://www.mongodb.org/display/DOCS/Updating#Updating-%24unset
Reply all
Reply to author
Forward
0 new messages