2016-11-05 7 views
-1

コレクションを作成し、コレクション内に1つのjson配列をプッシュすると、すべて正しいです。アドレスノードは正しく、配列として作成されますが、その中に再び1つの配列が形成されます。 以下は私のコードです。MongoDB間違ったjsonが作成されています

   DB db = mongoClient.getDB("test"); 

      DBCollection col1 = db.getCollection("arrayTest"); 

      //item to be pushed 
      BasicDBObject newdoc = new BasicDBObject(); 
      newdoc.append("$push", new BasicDBObject().append("address",Arrays.asList(
        new BasicDBObject().append("street","bandra").append("pin", "100"), 
        new BasicDBObject().append("street","worli").append("pin", "200"), 
        new BasicDBObject().append("street","marine lines").append("pin", "300")))); 

      //where clause 
      BasicDBObject findQ = new BasicDBObject(); 
      findQ.append("one", "one"); 

      //update 
      col1.update(findQ, newdoc); 

以下は、私のjsonの画像です。

enter image description here

+1

@pravinsolonaki _CODEはhttp://meta.stackoverflow.com/questions/285551/why-(こちらコピー&ペーストエディタ内からproblem_を再現するためにコンパイルすることができません画像をコードなしでアップロードすることができますか?/ 285557#285557) –

答えて

0

プッシュオペレータは、値が配列の場合、単一の要素として値を挿入します。

個別の値として挿入するには、各修飾キーを押します。画像内

newdoc.append("$push", new BasicDBObject("address", new BasicDBObject("$each", Arrays.asList(
      new BasicDBObject().append("street","bandra").append("pin", "100"), 
      new BasicDBObject().append("street","worli").append("pin", "200"), 
      new BasicDBObject().append("street","marine lines").append("pin", "300")))); 
関連する問題