2016-01-28 56 views
0

我有兩個貓鼬架構:查找貓鼬子文檔的時間更新

var ItemSchema = new Schema({ 
    trade: { 
     type: Schema.Types.ObjectId, 
     ref: 'Trade' 
    } 
}); 

var Item = mongoose.model('Item', ItemSchema); 

var TradeSchema = new Schema({ 
    expiresOn: { 
     type: Date 
    } 
}); 

var Trade = mongoose.model('Trade', TradeSchema); 

我想使用Item.find()找到一個項目,如果其交易日較少比用戶通過請求中的查詢字符串傳入的日期還要長。我正在使用以下代碼:

if (req.query.expiresBefore) { 
    Item.find({ 
     'trade.expiresOn': { 
      $lte: req.query.expiresBefore 
     } 
    }, function (err, trades) { 
     console.log(trades) 
    }) 
} 

但是,我在console.log()調用上收到一個空數組。使用$ gte也會返回一個空數組(儘管我的研究告訴我需要爲我的目的使用$ lte)。通過匹配子項(Trade)的屬性(expiresOn),我需要做什麼來查找項目文檔?

回答

0

參照這個Stackoverflow question,你想要做什麼是不可能的。我不知道你爲什麼設置這樣的模式,但如果你想保持它們原樣。我會建議你像下面

var ItemSchema = new Schema({ 
    trade: { 
     type: Schema.Types.ObjectId, 
     ref: 'Trade' 
    } 
}); 

var Item = mongoose.model('Item', ItemSchema); 

變化不大
var TradeSchema = new Schema({ 
    itemId: { //add this 
     type: Schema.Types.ObjectId, 
     ref: 'Item' 
    }, 
    expiresOn: { 
     type: Date 
    } 
}); 

var Trade = mongoose.model('Trade', TradeSchema); 

if (req.query.expiresBefore) { 
    Trade. 
     find({ 
      'expiresOn': { 
       $lte: req.query.expiresBefore 
      } 
     }). 
     populate('itemId'). 
     exec(function (err, trades) { 
      console.log(trades) 
     }); 
} 
+0

幫助很大,非常感謝! –