1

私はmongoシェルで実行される次の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);

しかし、それは機能していません。

どんな助けでも素晴らしいでしょう。

4

1 に答える 1

3

upsertオプションは a ではDBObjectなく 3 番目の引数で指定されていますDBCollection.update

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

、、およびを追加して$setOnInsert、更新用の DBObject を形成する必要があります。$pushstampsvisits

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);
于 2013-09-10T06:29:57.500 に答える