0

在我的 MongoDB Java 驱动程序中,我通过查询检索了一些文档。

DBCursor cursor = dbCollection.find(query).sort(new BasicDBObject("date", -1));  
return JSON.serialize(cursor);

这工作正常,它返回以下内容:

{
       "isSuccessful": true,
       "result": [
          {
             "date": {
                "$date": "2014-11-26T23:00:00.000Z"
             },
             value: 20
          }
       ]
    }

但是:我想使用 $date 编辑字段

SimpleDateFormat

我试过这个:

DBCursor cursor = dbCollection.find(query).sort(new BasicDBObject("date", -1));
while(cursor.hasNext()){
    DBObject dbo = cursor.next();
    dbo.put("date", simpleDate.format(dbo.get("date")));
}
return JSON.serialize(cursor);

但是 while 循环不会影响返回的结果。
它只是返回相同的结果。如何更改日期字段然后返回?我还写了以下行:

simpleDate.format(dbo.get("date"))

在 System.out.printline("");
这会打印出“27-11-2014”,就像我想要的那样。

4

1 回答 1

0

我通过执行以下操作解决了它:

DBCursor cursor = dbCollection.find(query).sort(new BasicDBObject("date", -1));
    List<DBObject> arr = new ArrayList<DBObject>();
    while(cursor.hasNext()){
        DBObject dbo = cursor.next();
        dbo.put("date", simpleDate.format(dbo.get("date")));
        arr.add(dbo);
    }
    return JSON.serialize(arr);

摘要:我将光标中的每个 DBObject 传递到 while 循环中,这里我使用 simpledateformat 对其进行编辑

simpleDate is a SimpleDateFormat("dd-MM-yyyy") object 

然后,我将每个项目放入一个数组列表中,然后我使用 JSON.serialize 对其进行序列化,然后将其返回给我的 JavaScript。

于 2014-11-27T14:07:56.433 回答