(MongoDB Java) $push成数组

我使用的是mongo 2.2.3和java驱动程序。我的困境,我必须将字段和值$push到数组中,但我似乎不知道如何做到这一点。我的数据示例:

"_id" : 1,
"scores" : [
    {
        "type" : "homework",
        "score" : 78.97979
    },
    {
        "type" : "homework",
        "score" : 6.99
    },
    {
        "type" : "quiz",
        "score" : 99
    }
]

我可以在外壳中$push:

db.collection.update({_id:1},{$push:{scores:{type:"quiz", score:99}}})

但是当我把它翻译成java时,我混淆了自我,把键盘撞到了墙上。

到目前为止,我的java代码(不完整和错误):

DBObject find = new BasicDBObject("_id", 1);
DBObject push = new BasicDBObject("$push", new BasicDBObject(
                        "scores", new BasicDBObject()));

答案 1
DBObject listItem = new BasicDBObject("scores", new BasicDBObject("type","quiz").append("score",99));
DBObject updateQuery = new BasicDBObject("$push", listItem);
myCol.update(findQuery, updateQuery);

答案 2

由于每个更新案例都有一个具有适当方法的生成器类。在这种情况下,这将是:mongodb-driver 3.1.com.mongodb.client.model.Updates

Document score = new Document().append("type", "quiz")
                               .append("score",99);

collection.updateOne(eq("_id", "1"),Updates.addToSet("scores", score));