我使用的是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”分支可以,但第一个分支不起作用,请帮我找出问题所在。
发布于 2013-09-07 23:51:12
下面的代码应该可以做到这一点:
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}}这是不正确的。
https://stackoverflow.com/questions/18671979
复制相似问题