new - ¿Cómo uso un guid en una consulta de shell mongodb?
mongoid example (3)
Cuando utilizo el shell MongoDB, ¿cómo uso un tipo de datos guid (que he usado como el _id en mi colección)?
El siguiente formato no funciona:
>db.person.find({"_id","E3E45566-AFE4-A564-7876-AEFF6745FF"});
Gracias.
Debe comparar el valor _id con una instancia de BinData (no con una cadena). Desafortunadamente, el constructor BinData toma una cadena Base64 en lugar de una cadena hexadecimal.
A su valor GUID le faltan dos dígitos hexadecimales al final, por lo que a los efectos de este ejemplo, asumiré que son "00". Los siguientes valores son equivalentes:
hex: "E3E45566-AFE4-A564-7876-AEFF6745FF00" (ignorando guiones)
base64: "ZlXk4 + SvZKV4dq7 / Z0X / AA =="
Por lo que su consulta debe ser:
> db.person.find ({_ id: nuevo BinData (3, "ZlXk4 + SvZKV4dq7 / Z0X / AA ==")})
Supongo que el subtipo binario se estableció correctamente en 3. Si no, ¿qué controlador se utilizó para crear los datos?
Podría usar la siguiente función js delante de su consulta así:
function LUUID(uuid) {
var hex = uuid.replace(/[{}-]/g, ""); // removes extra characters
return new UUID(hex); //creates new UUID
}
db.person.find({"_id" : LUUID("E3E45566-AFE4-A564-7876-AEFF6745FF"});
Puede guardar la función en el archivo .js y cargarla o abrirla antes de realizar su consulta y si copia el valor de sus resultados, debe cambiar el nombre de la función con:
- LUUID para UUID heredado
- JUUID para codificación Java
- NUUID para la codificación .net
- CSUUID para la codificación c #
- PYUUID para codificación python
Se puede utilizar fácilmente:
.find({ "_id" : CSUUID("E3E45566-AFE4-A564-7876-AEFF6745FF")})