我有两个这样的系列:
发货_数据
{
_id: ObjectId("63d19d7a1991a09011aa35ef"),
sourcemmsi: 228051000,
navigationalstatus: 0,
course: {
rateofturn: -127,
speedoverground: 0,
courseoverground: 291.5,
trueheading: 511
},
coordinates: {
longitude: -4.4850965,
latitude: 48.38132,
timestamp: 1443650424
}
}
源MMSI
{
_id: ObjectId("63d19f671991a09011e4eba4"),
mmsi_code: 228,
country: 'France'
}
第一个(Ship_Data)包含关于特定船只的信息,而第二个(SourceMMSI)显示源mmsi代码的前几位表示什么。例如,在我们的示例中,由于Ship_Data中的sourcemmsi字段以 228 开头,因此根据第二个集合,该船只可能来自法国。
我要完成的是使用这两个集合创建一个查询,并根据sourcemmsi字段的前三位数字返回记录。有没有什么方法可以完成这一点?
1条答案
按热度按时间ccrfmcuu1#
您可以通过
$toString
将代码转换为字符串(sourcemmsi
在转换为字符串之前需要先额外转换为Long)。然后,使用$indexOfCP
执行子串检查并查看索引是否为0。(即在sourcemmsi
的开始)。Mongo Playground