2017-02-04 60 views
0

是否可以在同一架构内执行查询? 例如,如果我有一个具有2个日期字段的模式,并且我需要查找其中一个日期字段大于另一个的数据。 这是我的模式和代码示例。同一架构内的猫鼬查询

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){

当我运行程序时,我收到以下错误

{消息: '演员,至今也没有为值 “LASTUPDATED” 在路径 “nextHearing”', 名称:'CastError', 类型:'date', value:'lastUpdated', path:'nextHearing'}

回答

0

new Date()将当前日期作为Date对象返回。 mongo shell用ISODate助手包装Date对象。 ISODate使用UTC。

,所以你可能需要改变:

var today = Date.now(); 

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

而且,看看this

+0

我不认为这是个问题。 我尝试使用你的代码。错误是这个'{'nextHearing':{$ gte:'lastUpdated'}}' – puneeth8994

+0

'nextHearing'和'lastUpdated'都是同一模式的字段,是否可以按照我所做的方式进行比较?如果不是,可能的解决方案是什么? – puneeth8994