【问题标题】:How to convert mongo shell query to java basicDBObject?如何将 mongo shell 查询转换为 java basicDBObject?
【发布时间】:2013-09-10 06:22:01
【问题描述】:

我有以下在 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);

但它不起作用。

任何帮助都会很棒。

【问题讨论】:

    标签: java mongodb


    【解决方案1】:

    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 2020-01-07
      • 2020-05-07
      • 2017-08-29
      • 1970-01-01
      相关资源
      最近更新 更多