2012-05-19 9 views
5

Estoy utilizando el controlador nativo mongodb para el nodo. Llamo al ensureIndex({ keywords: 1}) después de recuperar la colección. Cuando reviso la consola mongo, no aparece nada cuando llamo al db.mycol.getIndexes().mongo native ensureIndex no crea el índice

¿Qué estoy haciendo mal?

+5

Puede agregar el texto como respuesta a continuación. Esa es la forma de desbordamiento de la pila, solo responde tus preguntas como lo harían otros. Después de dos días (si no es que llega una respuesta mejor), puede aceptar su propia respuesta como correcta. Es mejor cuando otras personas vean que su pregunta ha sido resuelta. – Aufziehvogel

Respuesta

2

Los documentos de la API ayudaron un poco: http://mongodb.github.com/node-mongodb-native/api-generated/db.html#ensureindex

Se supone que tienes que llamar ensureIndex en el objeto de base de datos, no de la colección. Esto contradice la consola de JavaScript.

+0

No estoy seguro de si esto ha cambiado, pero 'collection.ensureIndex' parece funcionar para mí localmente. El ejemplo del código [aquí] (http://mongodb.github.com/node-mongodb-native/api-generated/collection.html#ensureindex) usa 'collection.ensureIndex'. – Gloopy

+0

Por alguna razón, 'collection.ensureIndex (...)' no crea el índice ni ejecuta la devolución de llamada por mí, pero 'db.ensureIndex (collection, ...)' sí lo hace. Usando MongoDB 2.4.10, node-mongodb-native 1.4.2. –

0

Encontré un problema similar y el problema era que no estaba abriendo la base de datos antes de llamar a ensureIndex. Lo que estaba haciendo era (coffeescript)

db.collection('resources').ensureIndex {"$**": "text"}, {name: "email_index_text"},(err, indexName) -> 
     console.log indexName 
     console.log err 
     db.close() 

y lo que funcionó fue

db.open (err,database) -> 
    db.collection('resources').ensureIndex {"$**": "text"}, {name: "email_index_text"},(err, indexName) -> 
     console.log indexName 
     console.log err 
     db.close() 

El primer fragmento hizo nada en absoluto. No se creó ningún índice y no se arrojó ningún error.

Cuestiones relacionadas