KobiF
KobiF

Reputation: 60

Adding values to an Array in MongoDB with Java

I have a document stored in a collection in a mongo database. I want to be able to add to two arrays that are already in the document.

Method for creating the document and arrays:

public void addNewListName(String listName) {

    MongoCollection<Document> collection = database.getCollection("lists");

    ArrayList< DBObject > array = new ArrayList< DBObject >();
    Document list = new Document ("name", listName)
            .append("terms", array)
            .append("definitions", array);
    collection.insertOne(list);
}

Method where I want to add values into the array:

public void addVocabToList(String listName, String newVocabTerm, String newDefinition) {

}

The picture shows what the document looks like in MongoDB Compass after the first method is executed

The picture shows what the document looks like in MongoDB Compass after the first method is executed

Upvotes: 1

Views: 913

Answers (1)

glytching
glytching

Reputation: 47865

Your addVocabToList() implementation will look something like this:

MongoCollection<Document> collection = database.getCollection("lists");

Document updatedDocument = collection.findOneAndUpdate(
    Filters.eq("name", listName),
    new Document("$push",
        new BasicDBObject("terms", new BsonString(newVocabTerm))
            .append("definitions", new BsonString(newDefinition))),
        new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER));

That code will:

  • Find the document having name=listName
  • Append the value of newVocabTerm to the terms array
  • Append the the value of newDefinition to the definitions array
  • Return the updated document (this part is optional)

Upvotes: 3

Related Questions