我正在使用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);
但它不起作用。
任何帮助都会很棒。
答案 0 :(得分:3)
upsert
选项未使用DBObject
指定,但第三个参数指定为DBCollection.update
public WriteResult update(DBObject q, DBObject o, boolean upsert, boolean multi)
您需要通过附加$setOnInsert
,$push
,stamps
和visits
来形成要更新的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);