Inserting Java Object to MongoDB Collection Using Java

后端 未结 11 1262
情话喂你
情话喂你 2020-12-28 13:34

I am trying to insert a whole Java object into a MongoDB Collection using Java. I am getting following error:

Error :

Exception in t         


        
11条回答
  •  醉酒成梦
    2020-12-28 13:54

    Hopefully this will work for you and you can get help from it. I performed database operations(insert,delete, update, get, getall) and used Person object for operations in MongoDB with java for demo purpose.

    1. Database connection class

    Connection.java

    package test;
    import org.bson.codecs.configuration.CodecRegistry;
    import org.bson.codecs.pojo.PojoCodecProvider;
    import static org.bson.codecs.configuration.CodecRegistries.fromProviders;
    import static org.bson.codecs.configuration.CodecRegistries.fromRegistries;
    import com.mongodb.MongoClient;
    import com.mongodb.MongoClientOptions;
    import com.mongodb.client.MongoDatabase;
    
    public class Connection {
        public MongoClient mongo;
        private String db;
        public MongoDatabase database;
        private static Connection instance;
    
        private Connection() {
            db = "chatsystem";
            CodecRegistry pojoCodecRegistry = fromRegistries(MongoClient.getDefaultCodecRegistry(),
                    fromProviders(PojoCodecProvider.builder().automatic(true).build()));
            mongo = new MongoClient("localhost", MongoClientOptions.builder().codecRegistry(pojoCodecRegistry).build());
            database = mongo.getDatabase(db);
    
        }
    
        public static Connection getInstance() {
            if (instance == null) {
                instance = new Connection();
                return instance;
            } else {
                return instance;
            }
        }
    
    }
    
    1. Model Class

    Person.java

    package test;
    
    import org.bson.types.ObjectId;
    
    public class Person {
    
        public Person() {
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String getFname() {
            return fname;
        }
    
        public void setFname(String fname) {
            this.fname = fname;
        }
    
        public String getLname() {
            return lname;
        }
    
        public void setLname(String lname) {
            this.lname = lname;
        }
    
        private ObjectId id;
    
        public Person(String username, String email, String password, String fname, String lname) {
            super();
            this.username = username;
            this.email = email;
            this.password = password;
            this.fname = fname;
            this.lname = lname;
        }
    
        public ObjectId getId() {
            return id;
        }
    
        public void setId(ObjectId id) {
            this.id = id;
        }
    
        private String username;
        private String email;
        private String password;
        private String fname;
        private String lname;
    }
    
    1. Main class

    test.java

    package test;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import static com.mongodb.client.model.Filters.*;
    import com.mongodb.client.FindIterable;
    import com.mongodb.client.MongoCollection;
    
    public class test {
        private MongoCollection person;
        Connection conn;
        public void getCollection() {
            conn = Connection.getInstance();
            person = conn.database.getCollection("person", Person.class);
        }
        public static void main(String[] args) throws Exception {
            test t = new test();
            t.getCollection();
            Person p = new Person();
            p.setEmail("test@test.com");
            p.setFname("ftest");
            p.setLname("ltest");
            p.setPassword("testtest");
            p.setUsername("test123");
    
    
            // insert person type objects in database
            t.insertPerson(p);
    
    
            // get all persons from database
            List pp = t.getAllPersons();
            Person pt = pp.get(0);
            System.out.println(pt.getEmail());
            System.out.println(pt.getId());
    
    
            // get one person from database by username filter
    
                     // pass username of person in method argument
            Person ph = t.getOnePerson("test123");
            System.out.println(ph.getEmail());
            System.out.println(ph.getId());
    
    
            // update/edit person by username filter
                    // pass username of person in method argument
            t.updatePerson("test123");
    
    
            // delete person by username filter
                   // pass username of person in method argument
            t.removePerson("updatetest123");
    
        }
    
        public void insertPerson(Person p) {
    
            person.insertOne(p);
        }
    
        public List getAllPersons() {
            FindIterable iterable = person.find();
            Iterator it = iterable.iterator();
            List allPersons = new ArrayList<>();
            while (it.hasNext()) {
                Person per = (Person) it.next();
                allPersons.add(per);
            }
            return allPersons;
        }
    
        public Person getOnePerson(String username) {
            return person.find(eq("username", username)).first();
        }
    
        public void updatePerson(String username) {
            Person p = new Person();
            p.setEmail("update@test.com");
            p.setFname("updateftest");
            p.setLname("updateltest");
            p.setPassword("updatetesttest");
            p.setUsername("updatetest123");
            person.replaceOne(eq("username", username), p);
    
        }
    
        public void removePerson(String username) {
            person.deleteOne(eq("username", username));
        }
    
    
    
    }
    

提交回复
热议问题