2012-05-19 2 views
5

Я использую собственный драйвер mongodb для узла. Я вызываю ensureIndex({ keywords: 1}) после извлечения коллекции. Когда я проверяю консоль mongo, ничего не появляется, когда я звоню db.mycol.getIndexes().mongo native makeIndex не создает индекс

Что я делаю неправильно?

+5

Вы можете добавить текст в ответе ниже. Это путь переполнения стека, просто ответьте на ваши вопросы, как и другие. Через два дня (если не лучший ответ приходит) вы даже можете принять свой собственный ответ как правильный. Лучше, когда другие люди видят, что ваш вопрос решен. – Aufziehvogel

ответ

2

Документов API немного помогли: http://mongodb.github.com/node-mongodb-native/api-generated/db.html#ensureindex

Вы должны позвонить ensureIndex на объекте базы данных, а не сбор. Это противоречит консоли JavaScript.

+0

Не уверен, что это изменилось, но 'collection.ensureIndex', похоже, работает для меня локально. Пример кода [здесь] (http://mongodb.github.com/node-mongodb-native/api-generated/collection.html#ensureindex) использует 'collection.ensureIndex'. – Gloopy

+0

По какой-то причине 'collection.ensureIndex (...)' не создает индекс и не выполняет обратный вызов для меня, а 'db.ensureIndex (collection, ...)' делает. Использование MongoDB 2.4.10, node-mongodb-native 1.4.2. –

0

Я столкнулся с аналогичной проблемой, и проблема заключалась в том, что я не открывал базу данных, прежде чем вызвать securityIndex. То, что я делал, было (кофе сценарий)

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

и что работал был

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

Первый фрагмент кода не сделал ничего. Ни один индекс не был создан, и ошибка не была выбрана.

Смежные вопросы