首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Mongodb Java:根据元素的特定条件移除文档中嵌入数组的元素

Mongodb Java:根据元素的特定条件移除文档中嵌入数组的元素
EN

Stack Overflow用户
提问于 2015-01-21 23:37:47
回答 13查看 8.5K关注 0票数 0

我有一个学生文档列表,其结构如下:

代码语言:javascript
复制
{
    "_id" : 0,
    "name" : "aimee Zank",
    "scores" : [
            {
                    "type" : "exam",
                    "score" : 1.463179736705023
            },
            {
                    "type" : "quiz",
                    "score" : 11.78273309957772
            },
            {
                    "type" : "homework",
                    "score" : 6.676176060654615
            },
            {
                    "type" : "homework",
                    "score" : 35.8740349954354
            }
    ]
}

如你所见,每个学生都有一个包含4个分数的列表。我需要删除每个学生文档的最低“家庭作业”分数。每个学生有2个条目表示"homewok“类型的分数(4个元素数组中的最后2个条目)。分数类型的模式和顺序是一致的,并且对所有学生都具有相同的模式,感谢您的帮助。

这就是我到目前为止一直在努力实现的:

代码语言:javascript
复制
    DBCursor cursor = collection.find();

    try {

        while(cursor.hasNext()) {
           BasicDBObject doc = (BasicDBObject) cursor.next();
           BasicDBList scoreList =  (BasicDBList) doc.get("scores");

           BasicDBObject hw1 = (BasicDBObject) scoreList.get("2");
           double hw1Score = hw1.getDouble("score");

           BasicDBObject hw2 = (BasicDBObject) scoreList.get("3");
           double hw2Score = hw2.getDouble("score");

           if (hw1Score > hw2Score) {
               BasicDBObject update = new BasicDBObject("scores.score", hw2Score);               
               collection.update(doc, new BasicDBObject("$pull",update));                                                  
           } else {
               BasicDBObject update = new BasicDBObject("scores.score", hw1Score);

               collection.update(doc, new BasicDBObject("$pull",update));                                  
           }
           System.out.println(doc);
        }

    } finally {
       cursor.close();
    }


}
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28071078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档