集合是Student,用来描述一些学生的信息。
最开始是通过命令行将数据插入进集合的,例如这里插入了一条数据。我从可视化界面里复制出来是这样的。

* Paste one or more documents here
*/
{
  "sid": "200800020102",
  "name": "LiHua",
  "sex": "女",
  "age": "20",
  "birthday": "1995-3-3",
  "dname": "SC",
  "classes": "2009",
  "password": "123456"
}

然后实际上存储的数据是:
在这里插入图片描述
我的主要问题就出在了_id的内容上。我通过java API去查询,设置的查询条件是sid=“20080020102”,但是查询返回的是空值。原因是使用java写的实体类没有定义_id这个字段,而是将sid定义成了id。如下代码所示:

package com.example.springmongo.entity;


import lombok.Data;
import org.springframework.data.annotation.Id;

import java.io.Serializable;

@Data
public class Student {
    @Id
    private String sid;
    private String password;
    private String name;
    private String sex;
    private String age;
    private String birthday;
    private String dname;
    private String classes;
}

然后我使用API插入的数据是这样的:

{
  "_id": "202000300115",
  "name": "Amy22",
  "sex": "女",
  "age": "18",
  "birthday": "2004-02-03",
  "dname": "SC",
  "classes": "2022",
  "_class": "com.example.springmongo.entity.Student",
  "password": "123456"
}

因此我使用命令行插入的数据去查询就查出了空值。
在这里插入图片描述
可以看到使用API插入的数据就可以查出来。

在这里插入图片描述
总结:可以根据需求选择是否使用MongoDB自动生成的_id,要和自定义的id区分开,否则可能出现查询数据为空的情况。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐