我得到以下错误:

在com上.aks.springStorage.SpringStorageApplication.main(SpringStorageApplication.java:22)[classes/:na]

奇怪的是,我没有在公司集合中使用任何类似"locale"的变量.我可以插入并获取计数,但findAll*都没有

public interface CompanyRepository extends MongoRepository<Company, String> {
    List<Company> findByName(String name);

    @Query("{'contact.address': ?0}")
    List<Company> findByAddress(String address);
}

@Document(collation = "company")
public class Company {
    private int id;
    private String name;
    private List<Product> products;
    private Contact contact;

    public Company(int id, String name, List<Product> products, Contact contact) {
        this.id = id;
        this.name = name;
        this.products = products;
        this.contact = contact;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Product> getProducts() {
        return products;
    }

    public void setProducts(List<Product> products) {
        this.products = products;
    }

    public Contact getContact() {
        return contact;
    }

    public void setContact(Contact contact) {
        this.contact = contact;
    }
}

// Client code:      
//this is working fine
int count = (int) companyRepo.count();

// Failing Here
companies = companyRepo.findByName("yy");

推荐答案

@Document(collation="company")

这看起来像是打字错误,也是你问题的原因.您try 设置集合名称,但使用collation property:https://docs.mongodb.com/manual/reference/collation/而不是collection

正确的注释形式应为:

@Document(collection = "company")
public class Company {
    // ...
}

或者更简单——因为valuecollection的别名:

@Document("company")
public class Company {
    // ...
}

甚至可以完全省略集合名称.在这种情况下,Spring将使用类名作为集合名:

@Document // name of collection wil be "company", as per class name
public class Company {
    // ...
}

最后一个例子是为什么这对您来说是有效的,例如计数查询,即使您没有明确提供集合名称.

Mongodb相关问答推荐

MongoDB对两个串联数组进行排序

如何在Mongo中查找数组中的特定对象

Next js、MongoDB和Prisma.包括不为相关字段工作

如何使用mongodb进行离线开发?

减法聚合Mongo文档Golang

如何在 MongoDB 中对字段进行自定义排序

有没有一种方法可以找到一个文档并通过 Go 更改 mongodb 中的 id/value 来克隆它

Mongoose 和 MongoDB,如何在具有多个引用的两个模型之间创建关系?

用Golang减go mongodb中的两个字段

System.FormatException occurred in MongoDB.Bson.dll - XXX is not a valid 24 digit hex string

MongoDB 列表 - 获取每第 N 个元素

findOneAndUpdate 和 findOneAndReplace 有什么区别?

无法提取地理键,经度/纬度超出范围

将 mongoose 字符串模式类型默认值设为空白并使该字段可选

升级mongodb

Mongo按实际上是数字的字符串值排序

在安装的 MongoDB homebrew 中设置 dbpath (Mac OS)

MongoDB 用 $type 匹配一个数组?

mongodb安装失败运行mongod

如何将 Geojson 文件导入 MongoDB