0

関数呼び出しが Java で次のように行われる場合:

collection.update(match, new BasicDBObject("$pull", update));

このステートメントの実行後にデータベースで更新されたドキュメントの数を知るにはどうすればよいですか?

そして、私の他の問題は、その要素がコレクションに存在する場合、ドキュメント内の配列から要素を削除したいということです。どうすれば簡単にできますか?コレクションに存在するかどうかを照会して削除する必要がありますか、それとも他の簡単な方法がありますか?

4

1 に答える 1

0

1) DBCollection.html#updateメソッドは、書き込み操作で影響を受けるドキュメントの数を含むnプロパティを含む WriteResult オブジェクトを返します。

2) 1 回の操作でそれを行う方法はないと思います。挿入時に要素がすでに他のドキュメントの配列にある場合は、更新を行って配列から要素を削除できます。そんな感じ:

DBObject newElement = ...

DBObject query = BasicDBObjectBuilder.start()
    .add("array", newElement)
    .get();

DBObject update = BasicDBObjectBuilder.start()
    .push("$pull")
        .add("array", newElement)
    .pop()
    .get(); 

collection.update(query, update);
collection.insert(newElement);
于 2013-04-04T18:41:47.533 に答える