Yo estoy tratando de sacar un elemento de una colección por medio de su particular _id, pero no puedo encontrar cómo.

Este es mi código

MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("DB");
MongoCollection<Document> collection =   database.getCollection("COLL");

Si me consulta a mi base de datos con

BasicDBObject query=new BasicDBObject("info.i0","0");
Document myDoc = collection.find(query).first();
System.out.println(myDoc.toJson());

Puedo obtener como salida

{ "_id" : { "$oid" : "560ea3f205240f065a3e9d19" }, "name" : "MongoDB", "type" : "database", "count" : 1, "info" : { "i0" : "0", "i1" : "1", "i2" : "2", "i3" : "3", "i4" : "4", "i5" : "5", "i6" : "6", "i7" : "7", "i8" : "8", "i9" : "9" } }

Pero Si trato

BasicDBObject query=new BasicDBObject("_id.$oid","560ea3f205240f065a3e9d19");
Document myDoc = collection.find(query).first();
System.out.println(myDoc.toJson());

Puedo obtener una excepción de puntero Nulo, como myDoc es nulo.

¿Qué estoy haciendo mal?

OriginalEl autor rastabob | 2015-10-02

3 Comentarios

  1. 6

    $oid está allí sólo para preservar HIJO representación.

    Sólo tiene sentido a MongoDB interna JSON analizadores.

    Usted sólo tiene que utilizar _id en su consulta:

    BasicDBObject query=new BasicDBObject("_id",new ObjectId("560ea3f205240f065a3e9d19"));

    También, tenga en cuenta que el _id campo es de tipo ObjectId y no String.

    Tendrá que envolver en una ObjectId constructor.

    Gracias. Yo estaba usando («_id»,»ObjectId(\»560ea3f205240f065a3e9d19\»)»); ese era el problema.

    OriginalEl autor Ori Dar

  2. 0

    Buena noticia es que no hay ningún problema en la consulta, pero el documento no es correcto, ¿Cómo es usted capaz de insertar presentada nombre empiece con $ ?

    Documentos tienen las siguientes restricciones en los nombres de campo:

    El nombre del campo _id es reservado para el uso como una clave principal; su valor debe ser único en la colección, es inmutable, y puede ser de cualquier tipo distinto de una matriz.
    Los nombres de campo no se puede iniciar con el signo de dólar ($) de carácter.
    Los nombres de campo no puede contener el punto (.) carácter.
    Los nombres de campo no puede contener el carácter null.

    http://docs.mongodb.org/manual/core/document/

    OriginalEl autor Rohit Jain

  3. 0

    El uso de JSON (scala) : Json.obj("_id" -> Json.obj("$oid" -> "560ea3f205240f065a3e9d19"))

    OriginalEl autor Benoit

Dejar respuesta

Please enter your comment!
Please enter your name here