将MongoDB与spring mongo一起使用,我正在寻找一种方便有效的方法来复制与特定查询匹配的文档,并将其再次批量插入到同一集合中,其中一个属性已更改。
编辑:也许这个问题还不够明确:我没有搜索批量更新:在集合中,我想找到所有符合foo =" bar"的文档,更改为foo =" baz",并将更改的文档作为副本插入同一集合中。 AFAIR,提到的重复问题并不能涵盖这一点。
有关于此的任何想法吗?
答案 0 :(得分:1)
复制时,您应确保不复制ID。每个文档在集合中都有唯一ID 。
您可以运行以下MongoDB命令:
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.find()
将返回
{ "_id" : "1234", "val" : "abcd" }
{ "_id" : "5678", "val" : "abcd" }
为了更新,您可以在插入之前使用以下命令:
db.collection.update(
{ _id: "5678" },
{ $set: { "val": "xyz" } }
)
现在运行时:
db.collection.find()
结果将是:
{ "_id" : "1234", "val" : "abcd" }
{ "_id" : "5678", "val" : "xyz" }