java - MongoDB 和 Java,为结果添加一个值

标签 java mongodb

我的代码如下所示。我查询 MongoDB,结果被序列化并返回。但我想为每个记录/文档添加一个新值,在本例中为“年龄”。 所以我想我应该循环结果并用 one.put 添加它们,但该值没有显示在返回的 json 中。

我做错了什么?

感谢您的帮助或建议!

    public String (int id){     
        DBCollection collection = database.getCollection("collection");
        BasicDBObject query = new BasicDBObject();
        query.put("id", id);

        DBCursor cursor = collection.find(query);       
        if (cursor.hasNext()) {
            DBObject one = cursor.next();
            one.put("age", 33);
        }

        String json = JSON.serialize(cursor)

        return json;
    }   

最佳答案

如果您只想注入(inject)一个属性到结果中而不将更改保存在数据库中,我建议使用以下实现:

public String getJSONString(int id) {     
    DBCollection collection = database.getCollection("collection");
    DBObject query = new BasicDBObject("id", id);

    List<DBObject> objects = collection.find(query).toArray();       
    for (DBObject obj : objects) {
        obj.put("age", 33);
    }

    return JSON.serialize(objects)
}

请注意,如果以这种方式实现,所有对象都必须保存在内存中

顺便说一句:您不会在原始帖子中循环光标(if 而不是 while)。此外,光标应始终为 closed在finally block 中。

关于java - MongoDB 和 Java,为结果添加一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13155328/

相关文章:

java vector 和线程安全

java - DCL 还坏吗?

java - 使用 spring 数据存储库和 mongodb 设置 spring 应用程序

mongodb shell $inc 将 int 转换为 double

node.js - 数据映射的 Mongoose/Mongo 结构

mongodb - Mac OS X Sierra 上的 mongodump 错误

javascript - Mongoose/MongoDB - 如何在聚合查询中使用 promise

java - 如何将 Alpha、红色、绿色、蓝色的 4 个独立 Int 值更改为 TYPE_INT_RGB?

java - Java Web 应用程序中的静态和同步

mongodb 3.6 arrayFilters 需要一个顶级字段名称