我的代码如下所示。我查询 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/