sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB Java – Publikování do vnořeného pole?

Na pole v dílčím dokumentu "level1" můžete odkazovat pomocí tečkové notace. Takže místo vytváření vnořených objektů DBObject, jako jste to udělali, jednoduše potřebujete:

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

Napsal jsem test, abych ukázal, že to funguje:

@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. MongoDB poskytuje základní autentizační systém. Změnilo se to ve verzi 2.2.3?

  2. Závažná chyba – třída „Mongo“ nebyla nalezena

  3. V aplikaci Node.js se pletou dva souběžné požadavky

  4. Proč Mongoose přidává prázdná pole?