我已将我的上限集合定义如下。
@Document("#{@environment.getProperty('customProperties.cappedCollection')}")
@Data
@NoArgsConstructor
@Builder
@AllArgsConstructor
public class ActiveRideCapped {
@Id
private String id;
private String riderId;
private GeoJsonPoint location;
}
我正在使用以下代码在应用程序启动时重新创建此集合。
@Autowired
MongoOperations mongoOperations;
@PostConstruct
public void createCappedCollection() {
mongoOperations.dropCollection(ActiveRideCapped.class);
mongoOperations.createCollection(ActiveRideCapped.class, CollectionOptions.empty().maxDocuments(20).size(50000).capped());
}
DB 中的集合如下所示。
{
"_id" : ObjectId("6037656d2f88af2124ba0d8c"),
"riderId" : "1",
"location" : {
"type" : "Point",
"coordinates" : [
0.1223,
2.2145
]
},
},
{
"_id" : ObjectId("603765532f88af2124ba0d8b"),
"riderId" : "2",
"location" : {
"type" : "Point",
"coordinates" : [
0.5468,
2.7856
]
}
}
我已经编写了一个上限存储库,如下所示
public interface ActiveRideCappedRepository extends ReactiveMongoRepository<ActiveRideCapped, String> {
@Tailable
Flux<ActiveRideCapped> findActiveRideCappedBy();
}
我写了下面的代码来创建一个过滤记录流。
@Override
public Flux<ActiveRideCapped> getRiderLocationStream(String riderId) {
return activeRideCappedRepository.findActiveRideCappedBy().filter(p -> p.getRiderId()!=riderId);
}
我的要求是,我应该根据我传递的 RiderId 获得过滤流。因此,如果我通过riderId=1,那么我应该得到所有riderId!=1 的记录的通量。但是过滤不起作用!我正在获取上限集合中的所有记录。
我在这里做错了什么?