MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Các đối tượng lưu trữ dữ liệu mùa xuân MongoRepository với số lượng trường khác nhau

Tôi sẽ giải thích cách xử lý các trường khác nhau bằng một ví dụ. Game.java sau Lớp POJO đại diện cho ánh xạ đối tượng tới game tài liệu sưu tầm.

public class Game {

    String name;
    List<Actions> actions;

    public Game(String name, List<Actions> actions) {
        this.name = name;
        this.actions = actions;
    }

    public String getName() {
        return name;
    }

    public List<Actions> getActions() {
        return actions;
    }

    // other get/set methods, override, etc..


    public static class Actions {

        Integer id;
        String type;

        public Actions() {
        }

        public Actions(Integer id) {
            this.id = id;
        }

        public Actions(Integer id, String type) {
            this.id = id;
            this.type = type;
        }

        public Integer getId() {
            return id;
        }

        public String getType() {
            return type;
        }

        // other methods
    }
}

Đối với Actions lớp bạn cần cung cấp các hàm tạo với các kết hợp có thể có. Sử dụng hàm tạo thích hợp với id , type , v.v. Ví dụ:tạo Game đối tượng và lưu vào cơ sở dữ liệu:

Game.Actions actions= new Game.Actions(new Integer(1000));
Game g1 = new Game("G-1", Arrays.asList(actions));
repo.save(g1);

Điều này được lưu trữ trong bộ sưu tập cơ sở dữ liệu game như sau (được truy vấn từ mongo vỏ):

{
        "_id" : ObjectId("5eeafe2043f875621d1e447b"),
        "name" : "G-1",
        "actions" : [
                {
                        "_id" : 1000
                }
        ],
        "_class" : "com.example.demo.Game"
}

Lưu ý các actions mảng. Vì chúng tôi chỉ lưu trữ id trong Game.Actions đối tượng, chỉ trường đó được lưu trữ. Mặc dù bạn chỉ định tất cả các trường trong lớp, nhưng chỉ những trường được cung cấp giá trị mới được tồn tại.

Đây là hai tài liệu khác với Game.Actions được tạo bằng type chỉ và id + type sử dụng các hàm tạo thích hợp:

{
        "_id" : ObjectId("5eeb02fe5b86147de7dd7484"),
        "name" : "G-9",
        "actions" : [
                {
                        "type" : "type-x"
                }
        ],
        "_class" : "com.example.demo.Game"
}
{
        "_id" : ObjectId("5eeb034d70a4b6360d5398cc"),
        "name" : "G-11",
        "actions" : [
                {
                        "_id" : 2,
                        "type" : "type-y"
                }
        ],
        "_class" : "com.example.demo.Game"
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Cập nhật mức trung bình trong tài liệu có 2 mảng lồng nhau

  2. Trong MongoDB, làm cách nào để sắp xếp tài liệu dựa trên một thuộc tính trong một đối tượng được nhúng?

  3. MongoDB 4.0 JRException:Tùy chọn 'con trỏ' là bắt buộc, ngoại trừ trường hợp tổng hợp với đối số giải thích

  4. Việc sử dụng kiểu javascript / javascriptwithscope của bson là gì

  5. Mongo $ addToSet an Array