2017-02-04 12 views
0

同じスキーマ内でクエリを実行することは可能ですか? たとえば、2つの日付フィールドを持つスキーマがあり、1つの日付フィールドが他のものよりも大きいデータを見つける必要がある場合。 これは私のスキーマとコードサンプルです。同じスキーマ内のマングースクエリ

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

以下のコードは、私のクエリです。 'これまでのキャストが値に失敗しました "lastUpdated" パスで "nextHearing"'、 :私はプログラムを実行すると、私は

{メッセージ次のエラーを取得する

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

 
var today = Date.now(); 
 

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

名前: 'CastError'、 タイプ: 'date'、 値: 'lastUpdated'、 パス: 'nextHearing'}

答えて

0

new Date()は、現在の日付をDateオブジェクトとして返します。 mongoシェルは、DateオブジェクトをISODateヘルパでラップします。 ISODateはUTCです。

ので、あなたが変更する必要があります。

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

var today = Date.now(); 

また、私はそれが問題だとは思わないthis

+0

を見てみましょう。 あなたのコードも使ってみました。エラーは '{'nextHearing':{$ gte: 'lastUpdated'}}' – puneeth8994

+0

と同じスキーマのフィールドで、 'nextHearing'と' lastUpdated'は両方とも私のやり方と比較できますか?そうでない場合、可能な解決策は何ですか? – puneeth8994

関連する問題