2012-04-20 13 views

Respuesta

19

¿Quiere decir que tiene la cadena de 24 dígitos hexadecimales de un ObjectId?

Suponiendo que eso es lo que quiere decir, la mayoría de los controladores tienen una forma de tomar una cadena y convertirla en un ObjectId. En JavaScript que es:

.find({_id:new ObjectId("4f91bfcfaa7c5687a0c686d4")}) 

Actualizado a ser un poco más útil para el conductor nodo nativo (de la documentación en https://github.com/christkv/node-mongodb-native):

// Get the objectID type 
var ObjectID = require('mongodb').ObjectID; 

var idString = '4e4e1638c85e808431000003'; 
collection.findOne({_id: new ObjectID(idString)}, console.log) // ok 
collection.findOne({_id: idString}, console.log) // wrong! callback gets undefined 
+0

Sí, entiendes mi pregunta. Lo sentimos, probablemente no estaba bien redactado, '_id's son objetos mongo bson predeterminados. Se mutan cuando envían json al cliente para que primero se conviertan en cadenas. Cuando vuelvan al servidor, ¿necesito volver a convertirlos en objetos para consultar la base de datos con ellos? – fancy

+0

Sí, para consultar necesita convertirlos a 'ObjectId's nuevamente. –

+0

bien, gracias por la información – fancy

1

Si sus valores _id son cadenas, puede consultarlos como cualquier otro campo. (Sólo recuerde, si va a configurar valores personalizados para _id, hay que mantenerlos único, o se obtendrá un error de clave duplicada.)

Aquí se muestra un ejemplo en el JS Shell Mongo:

> db.test.insert({_id:"stringID1"}) 
> db.test.insert({_id:"stringID2"}) 
> db.test.insert({_id:"stringID3"}) 
> db.test.find({_id:"stringID1"}) 
{ "_id" : "stringID1" } 
> 

Esto es lo que estabas buscando? ¡Espero no haber malinterpretado tu pregunta!

+0

Esto en realidad responde a la pregunta ** preguntada **, pero aparentemente no es la pregunta que ** quiso hacer ** ^^ –

Cuestiones relacionadas