amark / mongous

Simple MongoDB driver for Node.js with jQuery like syntax.
MIT License
246 stars 30 forks source link

Removing by ID #12

Open callumacrae opened 13 years ago

callumacrae commented 13 years ago

...doesn't seem to be working. I definitely have the ID correct - I set it to be an integer - but the following code fails to remove it:

db.remove({'_id': id});

Where the variable "id" is simply the ID. Any ideas?

amark commented 13 years ago

Hmm, I just tested this myself, you are right. I know that MongoDB has some special "_ID" BSON object or something strange. So I am guessing what happens is... when the ID is read out by node - it isn't the "object" ID that Mongo knows. So then when node passes it back up, MongoDB doesn't recognize it.

I also noticed that "_id" is an object itself, which has 'id' inside of it. {_id:{id:''}} which might be a problem (neither deleted it though). Also, my console shows ASCII escape codes like '\u00f6' - idk if this is a problem.

I assigned this problem to the guy who contributed the remove function. Idk if he is active / around. I really dislike the whole '_id' thing, and I don't understand properly how Mongo deals with ID objects, so I can't resolve this off the top of my head (I wish I could). If the artktec guy doesn't comment sometime soon - comment again to remind me of this problem. I doubt I will have time to dig in and investigate it and figure it out and patch it anytime soon.

But it is definitely something that needs to be fixed. It would be awesome if you yourself could figure it out, and then we can merge it.

Elsewise, I just recommend (if possible) you figure out what objects to delete based off of your own attributes/properties or adding your own ID attribute. - I know that works.

callumacrae commented 13 years ago

I worked out here I was going wrong:

db.scripts.save({_id:1010}); db.scripts.remove({_id:'1010'});

They've got to be exactly the same type.

What would be handy, is a remove all function - at the moment I'm having to use _id $neq -1. I'll see if I can patch it in myself.

amark commented 13 years ago

I take it that is via console, not via mongous? Eh, yeah. Strings/numbers - it can kill you.

Remove all would be cool. Bah, I'm sorry. Yeah, it'd be great if you could. Thanks for the reply.

callumacrae commented 13 years ago

Nah, var db = Mongous('api.scripts'); :)