Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-16909

Unify ObjectIds and strings

    XMLWordPrintableJSON

Details

    • Icon: Improvement Improvement
    • Resolution: Done
    • Icon: Major - P3 Major - P3
    • None
    • None
    • Internal Code
    • None

    Description

      I'm having an issue I think is likely faced by many many developers using mongo: two _id formats (hex string and ObjectId).

      The issue is described in both of these stackoverflow questions:
      http://stackoverflow.com/questions/23188490/best-practices-for-dealing-with-objectid-with-mongo-and-javascript
      http://stackoverflow.com/questions/27979012/best-ways-to-provide-a-very-open-ended-api-over-mongo-db-with-regards-to-objec

      I would like to suggest that mongo unify strings and ObjectIds. I am not suggesting that all _ids be strings. What I'm suggesting is that mongo convert any string that is a valid ObjectId representation to an ObjectId for storage, and on retrieval, convert any ObjectId to a string to pass to the end-user (client-side or server-side for the server-to-user part doesn't matter).

      This way you get a couple effects:

      • Users no longer have to manually convert between ObjectIds and their string representations when _ids need to be serialized.
      • Certain random strings that aren't intended to be ObjectIds get compressed for storage (not a problem, or much of a benefit)
      • There is a (negligible) cost of serializing and deserializing ObjectIds

      Currently, the only solution I have for my use-case is to have a large class of _ids referencing external objects (no primary keys tho) that are stored as strings rather than ObjectIds. This is obviously not ideal, which is why I'm suggesting a core feature for mongo.

      Attachments

        Activity

          People

            ramon.fernandez@mongodb.com Ramon Fernandez Marina
            fresheneesz Billy Tetrud
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: