2017-08-09 72 views
1

我有一个文档存储在mongo数据库的集合中。我想能够添加到已经在文档中的两个数组。使用Java将值添加到MongoDB中的数组

用于创建文档和数组

方法:

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

方法,我想值添加到阵列中:

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

图为该文件是什么样子在MongoDB Compass中执行第一种方法后

回答

1

addVocabToList()实施,将是这个样子:

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)); 

该代码将:

  • 找到一个具有名称文件= listName
  • newVocabTerm价值附加到terms阵列
  • newDefinition的值附加到definitions阵列
  • 返回更新的文件(此部分是可选的)
+0

完美地工作。非常感谢! – KobiF