2

フィールドの 1 つとして List を含むクラスがあります。このフィールドを更新するにはどうすればよいですか。

フィールドを更新する例を見つけました

BasicDBObject newDocument3 = new BasicDBObject().append("$set", new 
    BasicDBObject().append("type", "dedicated server"));

collection.update(new BasicDBObject().append("hosting", "hostA"), newDocument3);

リンクから -> http://www.mkyong.com/mongodb/java-mongodb-update-document/

だからこれは私が試したことです

BasicDBObject objectUpdateCommand = new BasicDBObject("$push", new 
    BasicDBObject("someList", stringValue));

collection.update(new BasicDBObject().append("id", user.getId()).append("email", 
    user.getEmail()), objectUpdateCommand);

結果: 変化なし。

私は何が欠けていますか?

シェルで試してみたところ、うまくいきました[すべてのIDと一致しないことはわかっていますが、テスト目的では機能します]

db.user.update( { Id: 'yourid'}, {$push: { someList: 'appendNewValue'} } )
4

1 に答える 1

2

コレクションに次の行を挿入しました。

{ "_id" : ObjectId("50bc89ef88555f5ad35da8ba"), "id" : 1, "email" : "test1@test.com", "list" : [ "list1", "list2" ] }
{ "_id" : ObjectId("50bc89f788555f5ad35da8bb"), "id" : 2, "email" : "test2@test.com", "list" : [ "list1", "list2" ] }

次に、次のコードを使用して、id=1でドキュメントを更新できます。

BasicDBObject cmd = new BasicDBObject().append("$push", new  BasicDBObject("list", "list3"));
coll.update(new BasicDBObject().append("id", 1).append("email","test1@test.com"), cmd);

更新後の行は次のようになります。

{ "_id" : ObjectId("50bc89ef88555f5ad35da8ba"), "id" : 2, "email" : "test2@test.com", "list" : [ "list1", "list2" ] }
{ "_id" : ObjectId("50bc89f788555f5ad35da8bb"), "email" : "test1@test.com", "id" : 1, "list" : [ "list1", "list2", "list3" ] }

コードをもう一度確認してください。このコードで動作するはずです。

于 2012-12-03T10:24:17.367 に答える