问题
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
回答1:
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
newVocabTermto thetermsarray - Append the the value of
newDefinitionto thedefinitionsarray - Return the updated document (this part is optional)
来源:https://stackoverflow.com/questions/45597271/adding-values-to-an-array-in-mongodb-with-java