在Java操作MongoDB時想在inset后獲取到數據庫中_id的值,其實是可以在insert成功后直接獲取到的,不過有點細節需要注意一下。下面直接結合示例代碼來說明:
(1)假設有這樣一個實體類:
public class TestDO { private String id; private String name; private String age; private String sex; private String address; private String hobby; public TestDO() { this.id = null; this.name = ""; this.age = ""; this.sex = ""; this.address = ""; this.hobby = ""; } public TestDO(String id, String name, String age, String sex, String address, String hobby) { this.id = id; this.name = name; this.age = age; this.sex = sex; this.address = address; this.hobby = hobby; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getHobby() { return hobby; } public void setHobby(String hobby) { this.hobby = hobby; } @Override public String toString() { return "TestDO{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", age='" + age + '\'' + ", sex='" + sex + '\'' + ", address='" + address + '\'' + ", hobby='" + hobby + '\'' + '}'; } }
(2)插入操作
private final String collectionName = "test_db"; @Autowired private MongoTemplate mongoTemplate; TestDO testDo = new TestDO();
testDo.setId(null); // 最好這樣處理一下 mongoTemplate.insert(testDo, collectionName );
String objectId = testDo.getId(); // 獲取到ObjectId值了
(3)注意事項
若想能正確獲取到_id的值,那么實體類中必須要有id字段屬性,同時在示例化時要么在構造函數中將this.id賦值為null,要么在實例化后調用setId(null),總之就是要在insert時一定要讓id值為null。