elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  MongoDB problema con campo unique [Solucionado]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: MongoDB problema con campo unique [Solucionado]  (Leído 3,504 veces)
peib0l
Wiki

Desconectado Desconectado

Mensajes: 3.493


freedom


Ver Perfil WWW
MongoDB problema con campo unique [Solucionado]
« en: 21 Marzo 2015, 21:24 pm »

Buenas tardes noches, llevo un día aprendiendo y programando con mongodb como base de mi aplicación, pero al intentar establecer un campo del documento único.. me ignora completamente.

La instrucción que ejecute es:
db.getCollection('usuarios').ensureIndex({"email":1},{"unique":true})

Pero al insertar más documentos con el mismo"email" no lo detecta como duplicado.  

Necesito ayuda Urgente, que puede estar pasando? donde he cometido el fallo?


« Última modificación: 22 Marzo 2015, 10:26 am por peib0l » En línea

peib0l
Wiki

Desconectado Desconectado

Mensajes: 3.493


freedom


Ver Perfil WWW
Re: MongoDB problema con campo unique [Solucionado]
« Respuesta #1 en: 22 Marzo 2015, 10:30 am »

Al parecer desde la shell de mongo no me estaba reconociendo la orden, así que use RoboMongo (GUI de mongo) y lo típico, botón derecho en el indice -> edit index..  -> Pestaña basic y marcamos "unique" y si ya teníamos campos repetidos "Drop duplicates"

Espero que a alguien le sirva de ayuda.


En línea

EFEX


Desconectado Desconectado

Mensajes: 1.171


"Dinero Facil"


Ver Perfil WWW
Re: MongoDB problema con campo unique [Solucionado]
« Respuesta #2 en: 22 Marzo 2015, 11:03 am »

Código
  1. > use test
  2. switched to db test
  3. > db.test.usuarios.insert({"nombre":"Nicolas","email":"nicolas@nothotmail.com"})
  4. WriteResult({ "nInserted" : 1 })
  5. > show collections
  6. system.indexes
  7. test.usuarios
  8. > db.test.usuarios.createIndex({email:1},{unique:true})
  9. {
  10. "createdCollectionAutomatically" : false,
  11. "numIndexesBefore" : 1,
  12. "numIndexesAfter" : 2,
  13. "ok" : 1
  14. }
  15. > db.test.usuarios.insert({"nombre":"JuanPePe","email":"nicolas@nothotmail.com"})
  16. WriteResult({
  17. "nInserted" : 0,
  18. "writeError" : {
  19. "code" : 11000,
  20. "errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.test.usuarios.$email_1  dup key: { : \"nicolas@nothotmail.com\" }"
  21. }
  22. })
  23. > db.test.usuarios.insert({"nombre":"JuanPePe","email":"juanpep@suemail.com"})
  24. WriteResult({ "nInserted" : 1 })
  25. > db.test.usuarios.find()
  26. { "_id" : ObjectId("550e910df49799b8c6496cb8"), "nombre" : "Nicolas", "email" : "nicolas@nothotmail.com" }
  27. { "_id" : ObjectId("550e91a9f49799b8c6496cbc"), "nombre" : "JuanPePe", "email" : "juanpep@suemail.com" }
  28.  

Tambien se puede especificar dropDups: true cuando creas el index y te borrara los duplicados.

http://docs.mongodb.org/manual/core/index-unique/
http://docs.mongodb.org/manual/core/index-creation/#drop-duplicates

Por ultimo creo que RoboMongo tiene consola, si la activa ves los cambios que hace..
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines