sql >> データベース >  >> NoSQL >> MongoDB

異なるフィールド数のSpringDataMongoRepository保存オブジェクト

    さまざまなフィールドがどのように処理されるかを例を挙げて説明します。次のGame.java POJOクラスは、gameへのオブジェクトマッピングを表します コレクションドキュメント。

    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
        }
    }
    

    Actionsの場合 可能な組み合わせをコンストラクターに提供する必要があるクラス。 idで適切なコンストラクターを使用します 、type 、など。たとえば、Gameを作成します。 オブジェクトを作成してデータベースに保存します:

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

    これはデータベースコレクションgameに保存されます 次のように(mongoからクエリ シェル):

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

    Actionsに注意してください 配列。 idのみを保存していたので Game.Actionsのフィールド オブジェクト、そのフィールドのみが保存されます。クラス内のすべてのフィールドを指定しても、値が指定されたフィールドのみが保持されます。

    これらは、Game.Actionsを含むさらに2つのドキュメントです。 typeで作成 id + typeのみ 適切なコンストラクターの使用:

    {
            "_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. mongodbのネストされた配列にデータを挿入します

    2. C#ドライバーを使用してVB.NETのMongoDBドキュメントを更新する

    3. Mongoは、フィールドに基づいてオブジェクトの配列内の重複を削除します

    4. Mongodbは、配列フィールドのサイズを合計します