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

MongoDB Java-ネストされた配列にプッシュしますか?

    ドット表記を使用して、サブドキュメント「level1」の配列を参照できます。したがって、これまでのようにネストされたDBObjectを作成する代わりに、次のものが必要です。

    coll.update(entry, new BasicDBObject("$push", new BasicDBObject("level1.arr1", "val2")));
    

    この作品を示すためにテストを書きました:

    @Test
    public void shouldPushANewValueOntoANesstedArray() throws UnknownHostException {
        final MongoClient mongoClient = new MongoClient();
        final DBCollection coll = mongoClient.getDB("TheDatabase").getCollection("TheCollection");
        coll.drop();
    
        //Inserting the array into the database
        final BasicDBList array = new BasicDBList();
        array.add("val1");
    
        final BasicDBObject entry = new BasicDBObject("level1", new BasicDBObject("arr1", array));
        coll.insert(entry);
    
        // results in:
        // { "_id" : ObjectId("51a4cfdd3004a84dde78d79c"), "level1" : { "arr1" : [ "val1" ] } }
    
        //do the update
        coll.update(entry, new BasicDBObject("$push", new BasicDBObject("level1.arr1", "val2")));
        // results in:
        // { "_id" : ObjectId("51a4cfdd3004a84dde78d79c"), "level1" : { "arr1" : [ "val1", "val2" ] } }
    }
    



    1. 一意のフィールドを持つすべてのドキュメントの流星クエリ

    2. Mongooseを使用して('タグ'の)配列をMongoDBに保存する

    3. MongoDBでバッファオフセット範囲を設定するにはどうすればよいですか?BSONオブジェクトに16MBを超えるファイルをアップロードすることはできませんか?

    4. MongoDBでfind()を使用して複数の単語を検索する