Uploaded image for project: 'Java Driver'
  1. Java Driver
  2. JAVA-85

CompareTo of ObjectId java driver returns different value than MongoDB implementation

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • 2.5
    • Affects Version/s: None
    • Component/s: None
    • Labels:
      None
    • Environment:
      Linux, Jboss
    • Minor Change

      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

            Assignee:
            eliot Eliot Horowitz (Inactive)
            Reporter:
            dlevison Dan Levison
            Votes:
            3 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: