Java Driver
  1. Java Driver
  2. JAVA-85

CompareTo of ObjectId java driver returns different value than MongoDB implementation

    Details

    • Type: Bug Bug
    • Status: Closed Closed
    • Priority: Major - P3 Major - P3
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.5
    • Component/s: None
    • Labels:
      None
    • Environment:
      Linux, Jboss
    • Backward Breaking:
      Sometimes
    • # Replies:
      3
    • Last comment by Customer:
      false

      Description

      I'am sorting messages in my program according to the ObjectId and than trying to fetch messages from MongoDB with ID bigger than the one I have, but than I'm getting messages I already have.
      After some tests and reading the documentation it looks like the Java ObjectId / compareTo is wrong.
      My test:
      @Test
      public void compareMongoToMongo2()

      { final String MONGO_ID_1 = "4b5d4825f5f32ad607e4c7c7"; final String MONGO_ID_2 = "4b5d4825f5f32ad6eae3c7c7"; ObjectId id1 = new ObjectId(MONGO_ID_1); ObjectId id2 = new ObjectId(MONGO_ID_2); System.out.println(id1.compareTo(id2)); }

      output: 29
      Meaning MONGO_ID_1 > MONGO_ID_2

      But when running the following query on MongoDB:
      > db.messages.find({"_id": {$gt: ObjectId("4b5d4825f5f32ad607e4c7c7")}} ,

      {"_id":1}

      )

      { "_id" : ObjectId("4b5d4825f5f32ad6eae3c7c7") }

      Meaning MONGO_ID_2 > MONGO_ID_1

        Activity

        Hide
        auto
        added a comment -

        Author:

        {u'login': u'erh', u'name': u'Eliot Horowitz', u'email': u'eliot@10gen.com'}

        Message: fix ObjectId.compareTo JAVA-85
        https://github.com/mongodb/mongo-java-driver/commit/04aa553e59dc1b1961198ed9235573653dff8aef

        Show
        auto
        added a comment - Author: {u'login': u'erh', u'name': u'Eliot Horowitz', u'email': u'eliot@10gen.com'} Message: fix ObjectId.compareTo JAVA-85 https://github.com/mongodb/mongo-java-driver/commit/04aa553e59dc1b1961198ed9235573653dff8aef
        Hide
        auto
        added a comment -

        Author:

        {u'login': u'agirbal', u'name': u'agirbal', u'email': u'antoine@10gen.com'}

        Message: JAVA-85: refactoring of ObjectId, to store values native, and encode/decode big endian. Fixes some flaws with Increment value failing comparison.
        https://github.com/mongodb/mongo-java-driver/commit/b7d9986e5ac45370e77797d922bb844cf8e05ffb

        Show
        auto
        added a comment - Author: {u'login': u'agirbal', u'name': u'agirbal', u'email': u'antoine@10gen.com'} Message: JAVA-85 : refactoring of ObjectId, to store values native, and encode/decode big endian. Fixes some flaws with Increment value failing comparison. https://github.com/mongodb/mongo-java-driver/commit/b7d9986e5ac45370e77797d922bb844cf8e05ffb
        Hide
        auto
        added a comment -

        Author:

        {u'login': u'agirbal', u'name': u'agirbal', u'email': u'antoine@10gen.com'}

        Message: JAVA-85: removed trick to compare inc wrap
        https://github.com/mongodb/mongo-java-driver/commit/170127bdb63e9c7b4dded9f3add7d670935d53cd

        Show
        auto
        added a comment - Author: {u'login': u'agirbal', u'name': u'agirbal', u'email': u'antoine@10gen.com'} Message: JAVA-85 : removed trick to compare inc wrap https://github.com/mongodb/mongo-java-driver/commit/170127bdb63e9c7b4dded9f3add7d670935d53cd

          People

          • Votes:
            3 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:
              Days since reply:
              3 years, 7 weeks, 6 days ago
              Date of 1st Reply: