2014-11-16 70 views
0

時間跨度我有一個貓鼬的模式,看起來像這樣:查詢的MongoDB(貓鼬),用於子文檔

var wishSchema = mongoose.Schema({ 
    foo: { 
     bar: String, 
     fooDate: Date 
    }, 
}); 

我想查詢所有的文件,其中fooDate是一個特定日期之後。我想出了這個解決方案,但它似乎並沒有正常工作:

{ 
    foo: { 
     $elemMatch: { 
      fooDate: { $gt: new Date('2014-01-01') } 
     } 
    } 
} 

我在想什麼? 在此先感謝!

回答

0

$elemMatch是用於數組。你正在尋找的查詢是:

{'foo.fooDate': {$gt: new Date('2014-01-01') }} 

$elemMatch將工作下面的架構,如果返回結果至少一個項目從foo陣列匹配指定的查詢(或全部指定的查詢):

var wishSchema = mongoose.Schema({ 
    foo: [ 
     bar: String, 
     fooDate: Date 
    ] 
}); 

如果你需要的文件內陣列上只能運行一個查詢,最好是隻使用dot notation

{'foo.fooDate': {$gt: new Date('2014-01-01') }} 

希望這有助於!

+0

嗨,謝謝你的回答!我試過你的解決方案,看起來它不像我打算做的那樣工作。儘管如此,我認爲你的答案是正確的,並確信失敗在於我的設置...... – zaphod1984