我正在尝试从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进行硬编码,则会得到想要的结果。
此外,当我调试它时,我看到了param,但是周围有双引号吗?
蒙哥罗盘的截图
答案 0 :(得分:0)
在MongoUI中,您应该检查字段ID的数据类型。它是ObjectId
而不是String
,因此您需要在存储库方法中传递org.bson.types.ObjectId
而不是String。
List<Offer> findByDetailsBuyerId(ObjectId buyerId);
答案 1 :(得分:0)
答案
@Query("{ 'details.buyerId' : ?0 }")
List<OfferOverview> findOffersByDetailsBuyerId(String buyerId);
但是我的主要问题是传递带有双引号的buyerId。