繁体   English   中英

如何在MongoDB Java驱动程序中将动态字段插入文档

[英]How to Insert Dynamic Fields to a Document In MongoDB Java Driver

 {
      "_id" : ObjectId("5888ae5f1495062544ac7951"),
      "site" : "gfhfh",
      "keywords" : {
        "keyword 1" : {
          "dailyranks" : {
            "2017-01-28" : {
              "rank" : 1,
            }
         **Dynamic data should add here by date ** 
          } 
        } 
      }
    }

我试图按日期插入关键字等级。 我想每天添加关键字排名。 但它不会只插入更新日期和值。 我在Java中使用了以下代码。

for (DBObject dbo : result) {
            DBObject keywordlist = (DBObject) dbo.get("keywords");
            BasicDBObject a = new BasicDBObject();
            for (String keyword : keywordlist.keySet()) {
                DBObject rank = getRank();
                BasicDBObject rankdate = new BasicDBObject(date, rank);
                BasicDBObject aa = new BasicDBObject("dailyranks", rankdate);
                a.append(keyword, aa);
            }
            coll.update(dbo, new BasicDBObject("$set", new BasicDBObject("keywords", a)), true, false);
}

看来您需要一个用于keywordsdailyranks的嵌入式数组。

"keywords": [{
    "keyword 1": {
        "dailyranks": [{
            "2017-01-28": {
                "rank": 1,
            }
        }]
    }
}]

具有此结构后,将使用$push运算符将新rank插入嵌入式doc数组中。

如果您尝试替换整个嵌入式阵列,则将使用$set

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM