使用mongo-java-driver来操作数组

时间:2013-09-07 09:44:20

标签: java arrays mongodb

我正在使用mongo-java-driver-2.11.2。我被数组操作困住了。我成功创建了一个数组,但在尝试将一个元素插入数组时失败并出现bad key: "$PUSH"异常。这是我的代码:

DBCursor cursor = iiCollection.find(new BasicDBObject(TOKEN, token.getToken()));
if(cursor.hasNext()){
    DBObject o = cursor.next();
    int freq   = (Integer) o.get(FREQ);
    iiCollection.update(o, new BasicDBObject(FREQ, freq + 1)
                    .append("$push", new BasicDBObject(DOCS, docId)));
}
else{
    iiCollection.insert(new BasicDBObject(TOKEN, token.getToken())
                    .append(FREQ, 1)
                    .append(DOCS, new String[]{docId}));
}

'else'分支没问题,但是第一个分支不起作用,请帮我解决问题。

1 个答案:

答案 0 :(得分:0)

以下代码可以解决这个问题:

iiCollection.update(o, new BasicDBObject("$set",new BasicDBObject("freq", freq+1)).append("$push", new BasicDBObject("docs", 1)));

原因是当你执行如下代码时,

new BasicDBObject("freq", freq+1).append("$push", new BasicDBObject("docs", 1))

它转换为

{ "freq" : 3 , "$push" : { "docs" : 1}}

这是不正确的。