使用mongo java驱动程序操作数组
我使用的是使用mongo java驱动程序操作数组,java,arrays,mongodb,Java,Arrays,Mongodb,我使用的是mongo-java-driver-2.11.2。我被数组操作卡住了。我成功地创建了一个数组,但在尝试向数组中插入一个元素时,出现了一个异常,即坏键:“$PUSH”。这是我的密码: DBCursor cursor = iiCollection.find(new BasicDBObject(TOKEN, token.getToken())); if(cursor.hasNext()){ DBObject o = cursor.next(); int freq = (I
mongo-java-driver-2.11.2
。我被数组操作卡住了。我成功地创建了一个数组,但在尝试向数组中插入一个元素时,出现了一个异常,即坏键:“$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”分支正常,但第一个分支不起作用,请帮助我解决问题。以下代码应该可以解决此问题:
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}}
这是不正确的