Mongoose - 通过数组中对象的键值查找

时间:2016-04-20 11:09:14

标签: node.js mongodb mongoose nosql

如果value等于数组内对象的键值,我试图获取结果。

我的行程集合如下所示。 集合中的每个文件代表一次旅行(旅程是火车离开时,直到它到达最终目的地)。因此每次旅行都有一个ID和stop_times值,这是一个停止对象数组。每个站点都有到达时间,出发时间,站点的站点ID和索引(所以第一站将被索引1,最后一站是变化的)(注意我还添加了另一个" id"键到该文档因为我不想使用MongoDB的默认对象ID。

{ 
    "_id" : ObjectId("57173a6bf248bbe24ab6e059"), 
    "id" : "20025365_190416", 
    "stop_times" : [
        {
            "arrival" : "05:44:00", 
            "departure" : "05:46:00", 
            "stationId" : NumberInt(37358), 
            "index" : NumberInt(1)
        }, 
        {
            "arrival" : "05:48:00", 
            "departure" : "05:50:00", 
            "stationId" : NumberInt(37365), 
            "index" : NumberInt(2)
        }'
        ...
    ]
}
{ 
    "_id" : ObjectId("57223a6bf448bbe25ab1e053"), 
    "id" : "13241404_190416", 
    "stop_times" : [
        {
            "arrival" : "22:02:00", 
            "departure" : "22:04:00", 
            "stationId" : NumberInt(37342), 
            "index" : NumberInt(1)
        }, 
        {
            "arrival" : "22:07:00", 
            "departure" : "22:09:00", 
            "stationId" : NumberInt(37361), 
            "index" : NumberInt(2)
        }'
        ...
    ]
}
...
...
...

我想要做的是通过以下凭据获取旅行: 抓住一次旅行,其中停止ID等于例如37358.因此搜索在这里非常深,我对如何做到这一点很困惑。我尝试了以下方法:

global.models.Trip.find({ stop_times: { $elemMatch: { stationId: 37358 }}})

但是我得到一个空数组。

这是架构:

var stopTimes = {
  arrival: String,
  departure: String,
  stationId: Number,
  index: Number
};

var schema = {
  id: {
    type: Number,
    index: true
  },
  stop_times: [stopTimes]
};

非常感谢任何帮助或参考!

0 个答案:

没有答案