2017-02-04 6 views
0

Возможно ли выполнить запрос в рамках той же схемы? Например, если у меня есть схема, которая имеет 2 поля даты, и мне нужно найти данные, где одно поле даты больше другого. Это мой пример схемы и кода.Запрос Mongoose в рамках той же схемы

var Schema = mongoose.Schema; 
 

 
var someSchema = new Schema({ 
 
\t someId \t   : \t \t { type: String, default: '' ,index:true, unique: true }, 
 
\t userName \t \t \t : \t \t { type: String, default: ''}, 
 
\t fullName \t \t \t : \t \t { type: String, default: '' }, 
 
\t created \t \t \t : \t \t {type: Date, default:''}, 
 
\t lastUpdated \t \t \t : \t \t {type: Date, default:''}, 
 
\t primaryGroupId \t \t : \t \t {type:String,default:''}, 
 
\t nextHearing \t \t \t : \t \t {type: Date, default:''}, 
 
\t status \t \t \t : \t {type:String,default:'open'}, 
 
\t 
 
}); 
 

 

 

 
mongoose.model('Problem', someSchema);

Код ниже мой запрос.

var problemModel = mongoose.model('Problem'); 
 

 
var today = Date.now(); 
 

 
problemModel.find({$and:[{'nextHearing':{$lte: today}},{'nextHearing':{$gte : 'lastUpdated'}}]},function(err, result){

Когда я запускаю программу, я получаю следующую ошибку

{сообщение: 'Cast до настоящего времени не удалось по значению "LastUpdated" на пути "nextHearing"', название: 'CastError', типа: 'дата', значения: 'LastUpdated', пути: 'nextHearing'}

ответ

0

новый Date() возвращает текущую дату как объект Date. Оболочка mongo обертывает объект Date с помощью помощника ISODate. ISODate находится в UTC.

так что вам, возможно, придется изменить:

var today = Date.now(); 

в

var today = new Date().toISOString(); 

Кроме того, посмотрите на this

+0

Я не думаю, что это проблема. Я также попытался использовать ваш код. Ошибка с этим '{'nextHearing': {$ gte: 'lastUpdated'}}' – puneeth8994

+0

как 'nextHearing', так и' lastUpdated' являются полями той же схемы, можно ли сравнивать их так, как я это сделал? Если нет, каково возможное решение? – puneeth8994

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

  • Нет связанных вопросов^_^