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

时间:2017-01-26 04:37:05

标签: java mongodb

 {
      "_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);
}

1 个答案:

答案 0 :(得分:1)

您似乎需要SELECT EARNED * SPLIT / 100keywords的嵌入式阵列。

dailyranks

拥有此结构后,您将使用"keywords": [{ "keyword 1": { "dailyranks": [{ "2017-01-28": { "rank": 1, } }] } }] 运算符将新$push插入到嵌入式doc数组中。

如果您尝试更换整个嵌入式阵列,则会使用rank