MongoDB problema con campo unique [Solucionado]

Iniciado por peib0l, 21 Marzo 2015, 21:24 PM

0 Miembros y 1 Visitante están viendo este tema.

peib0l

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?

peib0l

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.

EFEX

Código (bash) [Seleccionar]

> use test
switched to db test
> db.test.usuarios.insert({"nombre":"Nicolas","email":"nicolas@nothotmail.com"})
WriteResult({ "nInserted" : 1 })
> show collections
system.indexes
test.usuarios
> db.test.usuarios.createIndex({email:1},{unique:true})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
> db.test.usuarios.insert({"nombre":"JuanPePe","email":"nicolas@nothotmail.com"})
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 11000,
"errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.test.usuarios.$email_1  dup key: { : \"nicolas@nothotmail.com\" }"
}
})
> db.test.usuarios.insert({"nombre":"JuanPePe","email":"juanpep@suemail.com"})
WriteResult({ "nInserted" : 1 })
> db.test.usuarios.find()
{ "_id" : ObjectId("550e910df49799b8c6496cb8"), "nombre" : "Nicolas", "email" : "nicolas@nothotmail.com" }
{ "_id" : ObjectId("550e91a9f49799b8c6496cbc"), "nombre" : "JuanPePe", "email" : "juanpep@suemail.com" }


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..
GITHUB