0

我已将我的上限集合定义如下。

@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 的记录的通量。但是过滤不起作用!我正在获取上限集合中的所有记录。

我在这里做错了什么?

4

0 回答 0