MongoDB изменить поле - PullRequest
       5

MongoDB изменить поле

0 голосов
/ 20 декабря 2011

У меня есть коллекция «компаний» и документы имеют такую ​​структуру:

идентификатор, имя, адрес, филиал, город

Я хочу добавить поле ключевого слова, которое будет иметь индекс, чтобы я мог выполнять полнотекстовый поиск, но как я могу добавить поле к каждому документу?

Спасибо за помощь

1 Ответ

2 голосов
/ 20 декабря 2011

В MongoDB нет схемы, поэтому вам не нужно добавлять поле в каждый документ.Просто начните писать новые документы с этим полем или обновите старые документы, когда у вас есть это значение.

Что касается индексации, теперь вы можете использовать разреженных индексов , они будут более эффективными, еслибольшинство ваших документов не имеют этого поля.

Кроме того, вы можете захотеть, чтобы это поле keyword было массивом.Он может обрабатываться более эффективно, чем строка.

Если вы хотите добавить поле с таким же значением для всех документов в коллекции, вы можете использовать это:

db.collection.update({}, // update all documents
                    {$set : {keyword : []}}, // or another value
                    false, // is upsert?
                    true)  // is multi-update?

Когда вы делаете $set, вы не можете использовать значения из других полей.Поэтому, если это новое значение будет функцией других полей, у вас нет другого выбора, кроме как циклически просматривать документы и обновлять их по одному.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...