如果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]
};
非常感谢任何帮助或参考!