배열이이고 배열의 값 중 일부가 이미 데이터베이스에있을 수 있습니다. upsert
에 새 값을 입력하고 은 이전 값인을 증가시킵니다. 이 작업을 수행하는 한 가지 방법은 다음과 같습니다 데이터베이스에 업데이트 명령 및 증가 수를 사용 존재하는 모든 값에 대한mongoDB에 여러 문서 업로드 Up
. 다음을 사용하여 수행 할 수 있습니다.
db.test.update({ link: {$in: ["A", "B"]}}, {$inc: {count: 1}}, {upsert: true, multi:true})
내 데이터베이스에는없는 모든 값에 대해 각각의 값과 모든 값을 확인하고이를 데이터베이스로 업 사이 트하십시오.
두 번째 단계는 네트워크에 부하를 줄 수 있습니다. 한 명령에서 두 번째 단계를 수행 할 수있는 방법이 있습니까? 내 데이터베이스의
초기 상태 :
{ "_id" : ObjectId("5a45f97f84527190e1f28cb7"), "link" : "A", "count" : 3 }
나는 다음과 같은 배열을 가지고 const values = ['A', 'B', 'C']
지금 내가 뭔가를 갖고 싶어이을 고려 예를 들어
이 :
{"_id": ObjectId("abc"), "link": "A", "count" : 4},
{"_id": ObjectId("xyz"), "link": "B", "count" : 1},
{"_id": ObjectId("fgh"), "link": "C", "count" : 1}
당신이 언급하는 두 번째 단계는, 그냥 하나의 명령으로 업데이트 쿼리에 true로 upsert 가능하게함으로써 아닌 이루어집니다? 귀하의 질문을 이해하지 못합니다 – divine
@divine 모든 값에 대해 데이터베이스에 존재하는지 여부를 확인해야합니다. 그렇지 않으면 새 값으로 삽입해야합니다. 그러나 삽입하고자하는 많은 문서가 있기 때문에'insertMany()'와 같은 것이 있으면 배열의 모든 값을 상향 조정할 것이라고 생각했습니다. 내가 제시 한 예를 참조하십시오. –
@divine 두 번째 단계에서'update()'명령을 사용하면 ** 단일 쿼리 **가 필요하며 문서에 이미있는 많은 문서를 업데이트하거나 단일 문서를 삽입합니다. 내가 원하는 것은, 데이터베이스에 존재하는 것에 따라 많은 문서를 삽입하고 싶다. –