我正在使用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'分支没问题,但是第一个分支不起作用,请帮我解决问题。
答案 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}}
这是不正确的。