amark / mongous

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

A way to get the last inserted _id #11

Closed nmorse closed 13 years ago

nmorse commented 13 years ago

I am looking for a way to get the last inserted _id. It would be a nice api feature. Ideas? Thanks

amark commented 13 years ago

I'm sorry, not that I know of. Once again... it would be great if somebody could help.

An idea that might work would to be simply find() right after you insert - since Mongo stores (generally) in order of insertion. That means the first (or last?) element returned should be the one you just inserted. And you can get its _id from that. This of course... could be dangerous, since it is a race-condition.

hasenj commented 13 years ago

It would be nice if the api exposes the ObjectId constructor, so we can set the id manually and thus know for sure what it is

the mongo shell lets you do:

id = new ObjectId()`

Maybe mongous could expose this as:

id = mongous.gen_id()

And, while we're at it, maybe let the 'insert' method do this automatically; that is, before it actually inserts the object, it could check whether it has _id, and if not, assign it a new one, so that mongous itself knows the id before hand.

hasenj commented 13 years ago

I just found out this is already available

oid = require("mongous/bson/bson.js").ObjectID
amark commented 13 years ago

Thanks, yeah node-mongodb-driver's BSON files (included in mongous) has that with the ObjectID as you have found.

I've upgraded Mongous to include all the new BSON stuff, as well as to make sure it converts Long numbers back into integers when you find() them. I need to push an update to the repo here...