我有一个集合,其中存在多个location_id和created_date的item_id。
我想在created_date $ lte 2018-11-21的特定位置获取所有项目。 我希望$ lte只匹配一个记录,并且不再匹配,但是问题是,使用$ lte时,它不会停止到仅第一个匹配的行,而是会获取所有具有较低创建日期的行。
{
"created_date" : {
$lte : ISODate('2018-11-21'),
},
"location_id" : {
$in : [
"5a7c2cc414d4882bb9378373",
"5a7c0c6714d488216a60b033"
]
}
}
样本数据
{
"item_id" : ObjectId("5a81677f14d4880dc4017c74"),
"created_date" : ISODate("2018-11-10T11:00:00Z"),
"location_id" : "5a7c0c6714d488216a60b033"
},
{
"item_id" : ObjectId("5a81677f14d4880dc4017c74"),
"created_date" : ISODate("2018-11-09T10:00:00Z"),
"location_id" : "5a7c0c6714d488216a60b033"
},
{
"item_id" : ObjectId("5a81677f14d4880dc4017c74"),
"created_date" : ISODate("2018-11-10T11:00:00Z"),
"location_id" : "5a7c0c6714d488216a60b011"
},
{
"item_id" : ObjectId("5a81677f14d4880dc4017c74")
"created_date" : ISODate("2018-11-09T11:00:00Z"),
"location_id" : "5a7c0c6714d488216a60b011",
}
我只想要$ lte中的第一场比赛
{
"item_id" : ObjectId("5a81677f14d4880dc4017c74"),
"created_date" : ISODate("2018-11-10T11:00:00Z"),
"location_id" : "5a7c0c6714d488216a60b033"
},
{
"item_id" : ObjectId("5a81677f14d4880dc4017c74"),
"created_date" : ISODate("2018-11-10T11:00:00Z"),
"location_id" : "5a7c0c6714d488216a60b011"
}
我想避免使用该组,因为有超过300万条记录,并且组ll会减慢查询速度,是否还有其他方法可以在找到匹配记录时停止进一步匹配$ lte?
任何建议将不胜感激。