Spring 具有 MongoDB 的数据 - 按可为空的字段查找

Spring Data with MongoDB - Find by nullable fields

我有一个 Mongo 集合,其中包含这样的文档:

a: { product: 1, country: 2, stock: 1}
b: { product: 1, country: 3, stock: 3}
c: { product: 2, country: 1, stock: 1}

有时我想获得所有国家/地区的产品库存(因此我检索所有国家/地区的产品库存然后添加它们)而其他时候我想要特定国家/地区的库存。

是否可以制作一个 单一 方法,例如:

 findByProductAndCountry(Integer product, Integer country)

工作方式如下:

findByProductAndCountry(1, 2) //returns document a
findByProductAndCountry(1, null) //returns documents a and b

提前致谢!

回答你的问题:不可以。不可能在 mongodb 中编写这样的查询,因此你无法使用单个 spring 数据 mongodb 方法实现。

我的建议是为此在存储库接口中编写一个默认方法。这样您就可以将它与其余的查询方法一起使用:

public interface ProductRepository extends MongoRepository<Product, String> {

    List<Product> findByProduct(int product);

    List<Product> findByProductAndCountry(int product, int country);

    default List<Product> findByProductAndNullableCountry(Integer product, Integer country) {
        if (country != null) {
            return findByProductAndCountry(product, country);
        } else {
            return findByProduct(product);
        }
    }
}