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

キーワードランクを日付で挿入しようとしました。私は毎日キーワードランクを追加したいと思います。更新日と値のみを挿入するわけではありません。私はjavaで次のコードを使用しています。MongoDB 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

あなたはkeywordsdailyranksの両方に埋め込まれた配列を必要とするように見えます。

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

は、あなたがこのような構造を持っているしたら、埋め込まれたドキュメントの配列に新しいrankを挿入するために$push演算子を使用します。

組み込みアレイ全体を置き換える場合は、$setを使用します。

関連する問題