写Spring Data Mongo Null查询从mongo获取NULL文档?

时间:2016-03-24 08:23:05

标签: spring mongodb spring-data-mongodb

我正在开发Spring + Spring Data Mongo示例。在此示例中,我希望将文档放在Region is NULL。为此,我开发了Repository方法

List<Customer> findByRegionNull();

数据库查询显示大写 NULL 而不是 Null ,现在 db.customers.find({&#34; Region&#34;:&#34 ; null&#34;}); 查询执行我看不到任何结果。 我们如何编写存储库查询以获取NULL?

    db.customers.find({ "Region" :  "NULL" });
    {
        "_id" : ObjectId("51ba0970ae4ad8cc43bb95e3"),
        "CustomerID" : "ALFKI",
        "CompanyName" : "Alfreds Futterkiste",
        "ContactName" : "Maria Anders",
        "ContactTitle" : "Sales Representative",
        "Address" : "Obere Str. 57",
        "City" : "Berlin",
        "Region" : "NULL",
        "PostalCode" : 12209,
        "Country" : "Germany",
        "Phone" : "030-0074321",
        "Fax" : "030-0076545"
    }
    {
    "_id" : ObjectId("51ba0970ae4ad8cc43bb95e4"),
    "CustomerID" : "ANATR",
    "CompanyName" : "Ana Trujillo Emparedados y helados",
    "ContactName" : "Ana Trujillo",
    "ContactTitle" : "Owner",
    "Address" : "Avda. de la Constitución 2222",
    "City" : "México D.F.",
    "Region" : "NULL",
    "PostalCode" : 5021,
    "Country" : "Mexico",
    "Phone" : "(5) 555-4729",
    "Fax" : "(5) 555-3745"
}

我开发的代码: CustomerRepository.java

   public interface CustomerRepository extends CrudRepository<Customer, String>{
        List<Customer> findByRegionNull();
    }

我的测试用例不会给出结果吗?

@Test
    public void testRegionNull(){
        List<Customer> customers =cService.findByRegionNull(); 
        LOGGER.debug("SIZE : "+customers.size());
    }

Customer.java

@Document(collection="customers")
public class Customer {
    @Id
    private ObjectId id;

    @Field("CustomerID")
    private String customerId;

    @Field("CompanyName")
    private String companyName;

    @Field("ContactName")
    private String contactName;

    @Field("ContactTitle")
    private String contactTitle;

    @Field("Address")
    private String address;

    @Field("City")
    private String city;

    @Field("Region")
    private String region;

    @Field("PostalCode")
    private String postalCode;

    @Field("Country")
    private String country;

    @Field("Phone")
    private String phone;

    @Field("Fax")
    private String fax;
    // setters and getters
}

1 个答案:

答案 0 :(得分:1)

只需要使用@Query注释方式。请refer 6.3.2http://docs.spring.io/spring-data/data-document/docs/current/reference/html/

使用此:

public interface CustomerRepository extends CrudRepository<Customer, String>{
    @Query("{ 'Region' : 'NULL' }")
    List<Customer> findByRegionNull();
}