使用Java将值添加到MongoDB中的数组

时间:2017-08-09 17:37:13

标签: java arrays mongodb

我有一个存储在mongo数据库中的集合中的文档。我希望能够添加到文档中已有的两个数组。

创建文档和数组的方法:

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 个答案:

答案 0 :(得分:3)

您的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数组
  • 返回更新的文档(此部分是可选的)