如何将mongo shell查询转换为java basicDBObject?

时间:2013-09-10 06:22:01

标签: java mongodb

我正在使用mongo shell执行以下mongo查询。

db.test.update({ 
uuid: "160597270101684", 
sessionId: "160597270101684.1" 
}, { 
$setOnInsert: {
  stamps: {
    currentVisit: "1377500985", 
    lastVisit: "1377500985"
  }
},
$push:{
  visits: {
    page: "google.com",
    method: "GET"
  }
}
}, { upsert:true })

因为我是java的新手,所以我对创建basicDBObject有点困惑。

我曾尝试过这样的样本

BasicDBObject doc = new BasicDBObject("uuid",1).append("session",2);
BasicDBObject upsertion = new BasicDBObject("upsert",true);
collection.update(doc,upsertion);

但它不起作用。

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:3)

upsert选项未使用DBObject指定,但第三个参数指定为DBCollection.update

public WriteResult update(DBObject q, DBObject o, boolean upsert, boolean multi)

您需要通过附加$setOnInsert$pushstampsvisits来形成要更新的DBObject。

BasicDBObject update = new BasicDBObject();
BasicDBObject stamps = new BasicDBObject();
stamps.append("currentVisit", "1377500985").append("lastVisit", "1377500985");
BasicDBObject visits = new BasicDBObject();
update.append("$setOnInsert", stamps).append("$push", visits);

collection.update(doc, update, true);