2017-11-25 124 views
0

這是我的MongoDB架構:在貓鼬比較對象以日期時間

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var DogSchema = new Schema({ 
    id_user: { 
     type: String, 
     required:true 
    }, 
    name: { 
     type: String, 
     required:true 
    }, 
    imei: { 
     type: String, 
     required:true, 
     unique:true 
    }, 
    position: [{ 
     lat: {type: Number, required:true}, 
     lng: {type: Number, required:true}, 
     date: {type: Date, required:true} 
    }], 
    teams: [{ 
     code: {type:String,required:true} 
    }] 
}); 

module.exports = mongoose.model('Dog', DogSchema); 

我想找到一個特定的日期範圍內只有位置。 我試圖使用查詢:

db.dogs.find({"position.date" : { $gte : new Date("2017-11-25T00:00:00.000Z") , $lt : new Date("2017-11-26T00:00:00.000Z")}}) 

但是,如果我找到匹配查詢的位置,數據庫返回的所有文件。我怎樣才能得到那個日期範圍的職位?

回答

0

要爲子文檔中查詢中指定的條件,你必須使用.populate()match

db.dogs.find({}). 
    populate({ 
    path: "position", 
    match: { date: { $gte : new Date("2017-11-25T00:00:00.000Z") , $lt : new Date("2017-11-26T00:00:00.000Z") }}, 
    // Explicitly exclude `_id` if needed 
    select: '-_id date', 
    }). 
    exec() 

看到Mongoose Query Population