0

我正在使用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' 分支没问题,但第一个分支不起作用,请帮我找出问题所在。

4

1 回答 1

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}}

这是不正确的。

于 2013-09-07T15:51:12.263 回答