2017-08-21 9 views
2

私はmongoDBのnoobです。私は質問に苦労しています。その結果、DBレコードがになるように、私はに等しいすべてのお店を削除するにはどうすればよいMongoDB java - いくつかの値に等しい配列の要素を削除するには?

{ 
    "id": "1", 
    "type": 2, 
    "shops": ["1000","2000","3000"] 
    }, 
    { 
    "id": "2", 
    "type": 2, 
    "shops": ["1000","4000","5000"] 
    } 

、例えば:1000:事前にそんなに

{ 
    "id": "1", 
    "type": 2, 
    "shops": ["2000","3000"] 
    }, 
    { 
    "id": "2", 
    "type": 2, 
    "shops": ["4000","5000"] 
    } 

感謝のは、私は次のような構造を持っていると仮定しましょう!

+0

更新JSON ' "お店"::共有の更新JSON値のためには、Javaコードを更新することができます[ 0:4000 1:5000 ]「私には間違っているようです。リストには、それらのキーと値を含むオブジェクトが含まれていなければなりません。 – nullpointer

答えて

2

次のようにpull operatorを使用して、このような何かを実行することができます。

あなたのコレクションの名前として shopCollectionを想定し
db.shopCollection.update(
    { }, 
    { $pull: { "shops": { "idShop", 1000 } } }, 
    { multi: true } 
) 

を。

編集MongoDB Java pullで述べたようにJavaで同じを使用するために、あなたは答えをたどることができます。 Javaでは、このような何か:

Bson query = new org.bson.Document(); 
Bson fields = new org.bson.Document().append("shops", new org.bson.Document().append("$idShop",1000)); 
Bson update = new org.bson.Document("$pull",fields); 
yourCollection.updateMany(query, update); 

EDIT2

Bson filter = Filters.in("shops","1000"); 
Bson query = Filters.elemMatch("shops", filter); 
Bson update = new org.bson.Document("$pull", filter); 

campaignsCollection.updateMany(query, update);` 
+1

あまりにもすばやく答えてくれてありがとう。 getCollection( "stores")を呼び出してコレクションを取得しますが、updateOneメソッドとupdateManyメソッドのみが見つかりません。 – Poider12

+1

@ Poider12コレクションにアクセスする際に使用しているJavaコードで質問を更新してください。また、私が共有するクエリは、Javaではなくmongoシェル用であることにも注意してください。 javaのupdateManyを使って文書のリストを更新することができます。 – nullpointer

+0

Bsonクエリ=新しいドキュメント(); Bend fields = new Document()。append( "スポット"、新しいDocument()。append( "$ elemMatch"、1000)); Bson update =新しいドキュメント( "$ pull"、fields); campaignsCollection.updateMany(query、update);このようなものでしょうか? – Poider12

関連する問題