无法使用参数查询 mongo 存储库

Not able to query mongo repository with parameter

我正在尝试从 mongodb

查询以下对象
[
  {
    "id": "6b3a9814c1990a0578988d9e",
    "details": {
      "buyerId": "5bd450ed0307fa0a3a904376",
      "offerId": "1",
      "productId": "5b3a9814c1880a0578988d6a",
      "productTitle": "Watch",
      "amount": 50,
      "status": "Open",
    }
  }
]

我正在使用 spring-boot-starter-data-mongodb 所以首先,我尝试了标准方式。

这是我的 存储库 ,

中的内容
public interface OfferRepository extends MongoRepository<Offer, String> {

   List<Offer> findOffersByDetailsBuyerId(String buyerId);
}

我也试过 自定义查询,

@Query(value = "{'details.buyerId' : ?0 }")
List<Offer> findOfferByDetails_BuyerId(@Param("buyerId") String buyerId);

两者都返回一个空数组。但是,如果我在查询中对 buyerId 进行硬编码,我会得到我想要的结果。

此外,当我调试它时,我看到了参数但它周围有双引号?

来自 mongo 指南针的屏幕截图

在 MongoUI 中,您应该检查字段 ID 的数据类型。它是 ObjectId 而不是 String 因此您需要在存储库方法中传递 org.bson.types.ObjectId 而不是 String。

 List<Offer> findByDetailsBuyerId(ObjectId buyerId);

回答

@Query("{ 'details.buyerId' : ?0 }")
List<OfferOverview> findOffersByDetailsBuyerId(String buyerId);

但我的主要问题是使用 双引号 传递 buyerId。