2013-09-12 3 views

ответ

2

В основном вы не можете этого сделать. Хотя вы не можете ссылаться на значение внутри запроса, вы не можете преобразовать его на лету. Вы можете обновить с определенным значением, если вы знаете, что вы, вероятно, положить в Там нет такого понятия:.

db.collection.update({},{$set:{b:ISODate('$b')}}) 

Это запрос увеличения тока.

Единственный способ - написать скрипт, который сканирует документы сохранения с обновленным типом. Вы также можете запускать запрос на основе типа поля, которое может помочь, если ваш поток тормозит между ними.

Для этого решения убедитесь, что вопрос: MongoDB: How to change the type of a field?

Решение есть что-то вроде:

db.collection.find().forEach(function (x) { 
    x.b = new ISODate(x.b); // convert field to ISODate 
    db.collection.save(x); 
}); 
1

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

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