MongoDB $oid vs ObjectId
Asked Answered
M

1

19

I'm trying to get mongodb query working. Collection comes in the format:

{
"_id": {
    "$oid": "54651022bffebc03098b4567"
},
"browser": "ie",
"browser_version": "10.0 Desktop",
"os_version": "8",
"device": null,
"os": "Windows"
}

The following works:

{
    "_id": {
        "$in": [
            {
                "$oid": "54651022bffebc03098b4567"
            },
            {
                "$oid": "54651022bffebc03098b4568"
            }
        ]
   }
}

However, I get a syntax error for the following:

{
    "_id": {
        "$in": [
            ObjectId("54651022bffebc03098b4567"),
            ObjectId("54651022bffebc03098b4568")
        ]
    }
}

There are a similar questions that suggested that ObjectId should work:

How to create query with ObjectIds using java?

$all parameter in mongodb does not work with ObjectId list

Monogamist answered 14/11, 2014 at 20:48 Comment(3)
Which client are you using to enter and run these queries? The mongo shell? A Java program? (You link to a Java article at the bottom.) While many of the concepts and details are similar across all clients, many have their own particular quirks that make them unique. For example, the ObjectId() syntax in your third code block I would expect to work only in JavaScript (including the mongo shell).Chaunce
Wait your trying this in Java? That's not how you make objects in JavaCarding
I'm running queries in Mongolab browser. I also tried running the same query in php with MongoId() constructor that worked fineMonogamist
C
29

The MongoLab UI uses Strict MongoDB Extended JSON so Object IDs are represented thusly, as in the second code block of the OP:

{ "$oid": "<id>" }
Chaunce answered 14/11, 2014 at 22:17 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.