Spring Data MongoDB: Dokument einfügen
In Spring Data MongoDB können Siesave()
,insert()
verwenden, um ein oder eine Liste von Objekten in der MongoDB-Datenbank zu speichern.
User user = new User("..."); //save user object into "user" collection / table //class name will be used as collection name mongoOperation.save(user); //save user object into "tableA" collection mongoOperation.save(user,"tableA"); //insert user object into "user" collection //class name will be used as collection name mongoOperation.insert(user); //insert user object into "tableA" collection mongoOperation.insert(user, "tableA"); //insert a list of user objects mongoOperation.insert(listofUser);
Wenn Sie ein Objekt gespeichert und keinen "Sammlungsnamen" angegeben haben, wird standardmäßig der Klassenname als Sammlungsname verwendet.
1. Speichern und einfügen
Sollten Sie das Speichern oder Einfügen verwenden?
-
Speichern - Es sollte in
saveOrUpdate()
umbenannt werden. Es führtinsert()
aus, wenn "_id" NICHT vorhanden ist, oderupdate()
, wenn "_id" vorhanden ist. " -
Einfügen - Nur einfügen, wenn "_id" vorhanden ist, wird ein Fehler generiert.
Siehe folgendes Beispiel
//get an existed data, and update it User userD1 = mongoOperation.findOne( new Query(Criteria.where("age").is(64)), User.class); userD1.setName("new name"); userD1.setAge(100); //if you insert it, 'E11000 duplicate key error index' error is generated. //mongoOperation.insert(userD1); //instead you should use save. mongoOperation.save(userD1);
2. Beispiel zum Einfügen von Dokumenten
In einem vollständigen Beispiel sehen Sie, wie Sie ein oder eine Liste von Benutzerobjekten in MongoDB speichern.
SpringMongoConfig.java – Create a mongoTemplate bean in Spring container.
package com.example.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.core.MongoTemplate; import com.mongodb.MongoClient; /** * Spring MongoDB configuration file * */ @Configuration public class SpringMongoConfig{ public @Bean MongoTemplate mongoTemplate() throws Exception { MongoTemplate mongoTemplate = new MongoTemplate(new MongoClient("127.0.0.1"),"yourdb"); return mongoTemplate; } }
Verwendet @Document, um einen „Sammlungsnamen“ zu definieren, wenn Sie dieses Objekt speichern. In diesem Fall wird beim Speichern eines Benutzerobjekts das Objekt in der Benutzerauflistung gespeichert.
User.java
package com.example.user; import java.util.Date; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.index.Indexed; import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat.ISO; @Document(collection = "users") public class User { @Id private String id; @Indexed private String ic; private String name; private int age; @DateTimeFormat(iso = ISO.DATE_TIME) private Date createdDate; //getter and setter methods }
Vollständige Beispiele zeigen Ihnen verschiedene Möglichkeiten zum Einfügen von Daten, zum Lesen von Code und Kommentaren, die sich selbst erklären lassen.
App.java
package com.example.core; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import com.example.config.SpringMongoConfig; import com.example.user.User; public class App { public static void main(String[] args) { // For Annotation ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringMongoConfig.class); MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate"); // Case1 - insert a user, put "tableA" as collection name System.out.println("Case 1..."); User userA = new User("1000", "apple", 54, new Date()); mongoOperation.save(userA, "tableA"); // find Query findUserQuery = new Query(); findUserQuery.addCriteria(Criteria.where("ic").is("1000")); User userA1 = mongoOperation.findOne(findUserQuery, User.class, "tableA"); System.out.println(userA1); // Case2 - insert a user, put entity as collection name System.out.println("Case 2..."); User userB = new User("2000", "orange", 64, new Date()); mongoOperation.save(userB); // find User userB1 = mongoOperation.findOne( new Query(Criteria.where("age").is(64)), User.class); System.out.println(userB1); // Case3 - insert a list of users System.out.println("Case 3..."); User userC = new User("3000", "metallica", 34, new Date()); User userD = new User("4000", "metallica", 34, new Date()); User userE = new User("5000", "metallica", 34, new Date()); ListuserList = new ArrayList (); userList.add(userC); userList.add(userD); userList.add(userE); mongoOperation.insert(userList, User.class); // find List users = mongoOperation.find( new Query(Criteria.where("name").is("metallica")), User.class); for (User temp : users) { System.out.println(temp); } //save vs insert System.out.println("Case 4..."); User userD1 = mongoOperation.findOne( new Query(Criteria.where("age").is(64)), User.class); userD1.setName("new name"); userD1.setAge(100); //E11000 duplicate key error index, _id existed //mongoOperation.insert(userD1); mongoOperation.save(userD1); User userE1 = mongoOperation.findOne( new Query(Criteria.where("age").is(100)), User.class); System.out.println(userE1); } }
Ausgabe
Case 1... User [id=id, ic=1000, name=apple, age=54, createdDate=Sat Apr 06 12:35:15 MYT 2013] Case 2... User [id=id, ic=2000, name=orange, age=64, createdDate=Sat Apr 06 12:59:19 MYT 2013] Case 3... User [id=id, ic=3000, name=metallica, age=34, createdDate=Sat Apr 06 12:59:19 MYT 2013] User [id=id, ic=4000, name=metallica, age=34, createdDate=Sat Apr 06 12:59:19 MYT 2013] User [id=id, ic=5000, name=metallica, age=34, createdDate=Sat Apr 06 12:59:19 MYT 2013] Case 4... User [id=id, ic=2000, name=new name, age=100, createdDate=Sat Apr 06 12:59:19 MYT 2013]
3. Mongo-Konsole
Überprüfen Sie die Mongo-Konsole, und sehen Sie, was eingefügt und erstellt wurde.
> mongo MongoDB shell version: 2.2.3 connecting to: test > show dbs admin 0.203125GB yourdb 0.203125GB > use yourdb switched to db yourdb > show collections system.indexes tableA users > db.tableA.find() { "_id" : ObjectId("id"), "_class" : "com.example.user.User", "ic" : "1000", "name" : "apple", "age" : 54, "createdDate" : ISODate("2013-04-06T05:04:06.384Z") } > db.users.find() { "_id" : ObjectId("id"), "_class" : "com.example.user.User", "ic" : "3000", "name" : "metallica", "age" : 34, "createdDate" : ISODate("2013-04-06T05:04:06.735Z") } { "_id" : ObjectId("id"), "_class" : "com.example.user.User", "ic" : "4000", "name" : "metallica", "age" : 34, "createdDate" : ISODate("2013-04-06T05:04:06.735Z") } { "_id" : ObjectId("id"), "_class" : "com.example.user.User", "ic" : "5000", "name" : "metallica", "age" : 34, "createdDate" : ISODate("2013-04-06T05:04:06.735Z") } { "_id" : ObjectId("id"), "_class" : "com.example.user.User", "ic" : "2000", "name" : "new name", "age" : 100, "createdDate" : ISODate("2013-04-06T05:04:06.731Z") }
P.S To remove the extra _class column, read this article – Spring Data MongoDB Remove _class Column.
Quellcode herunterladen
Laden Sie es herunter -SpringData-MongoDB-Insert-Example.zip (24 KB)