2017-03-22 7 views
0

MongoDBをSpring Mongoで使用すると、特定のクエリに一致するドキュメントをコピーし、同じコレクションに一括して挿入する便利で効率的な方法を探しています。MongoDBドキュメントを検索、変更、挿入する一括操作

EDIT:おそらく質問が十分ではなかった:一括更新を探していない:コレクションで、foo = "bar"に一致するすべての文書を検索し、foo = "baz"に変更し、変更したドキュメントを同じコレクション内のコピーとして挿入します。 AFAIR、上記の重複した質問はこれをカバーしていません。

これに関するご意見はありますか?

答えて

1

コピーするときは、IDをコピーしないようにしてください。各文書にはの一意のIDがコレクション内にあります。

あなたは次のMongoDBを実行することができますコマンド:

db.collection.find() 

は、次のコマンドを使用することができます更新するために

{ "_id" : "1234", "val" : "abcd" } 
{ "_id" : "5678", "val" : "abcd" } 

を返します。

db.collection.insert({_id: '1234', val: "abcd"}) 
var existingDocument = db.collection.findOne({_id: '1234'}) // get a local copy of the document. 
existingDocument._id = '5678' // changing the copied document id. 

db.collection.insert(existingDocument) // insert into the MongoDB the same document with different id. 

は今のコマンドを実行しています挿入前:

実行している場合
db.collection.update(
    { _id: "5678" }, 
    { $set: { "val": "xyz" } } 
) 

は今:

db.collection.find() 

を結果は以下のようになります。

{ "_id" : "1234", "val" : "abcd" } 
{ "_id" : "5678", "val" : "xyz" } 
関連する問題