itsource

MongoDB 셸에서 쿼리 업데이트

mycopycode 2023. 6. 21. 22:33
반응형

MongoDB 셸에서 쿼리 업데이트

셸에서 제 질문은 다음과 같습니다.

db.checkin_4e95ae0926abe9ad28000001.update({location_city:"New York"}, {location_country: "FUDGE!"});

하지만, 그것은 실제로 내 기록을 업데이트하지는 않습니다.오류도 없습니다.내가 할 때db.checkin_4e95ae0926abe9ad28000001.find({location_city:"New York"});이것을 실행한 후, 나는 내 모든 결과를 얻지만,location_country변경되지 않음:

{
    "_id": ObjectId("4e970209a0290b70660009e9"),
    "addedOn": ISODate("2011-10-13T15:21:45.772Z"),
    "location_address1": "",
    "location_city": "New York",
    "location_country": "United States",
    "location_latLong": {
        "xLon": -74.007124,
        "yLat": 40.71455
    },
    "location_source": "socialprofile",
    "location_state": "New York",
    "location_zip": ""
}

업데이트 함수의 번째 매개 변수에서 업데이트하려면 $set 연산자를 사용해야 하기 때문입니다.location_country아래의 예와 같이:

db.checkin_4e95ae0926abe9ad28000001.update(
   {location_city:"New York"}, //find criteria
   // this row contains fix with $set oper
   { $set : { location_country: "FUDGE!"}}); 

여기에서 사용 가능한 업데이트 연산자 목록을 찾을 수 있습니다.

버전 3.6에서 변경되었습니다.다음은 업데이트 구문입니다.

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>,
     collation: <document>,
     arrayFilters: [ <filterdocument1>, ... ]
   }
)

예:

db.getCollection('products').update({},{$unset: {translate:1, qordoba_translation_version:1}}, {multi: true})

예를 들어, 다음을 수행합니다.

db.checkin_4e95ae0926abe9ad28000001.update(
   {location_city:"New York"}, //query
   // $update query
   { $set : { location_country: "FUDGE!"}});

기본적으로 update() 메서드는 단일 문서를 업데이트합니다.쿼리 기준과 일치하는 모든 문서를 업데이트하도록 다중 매개변수를 설정합니다.

예 2:

   db.checkin_4e95ae0926abe9ad28000001.update(
       {location_city:"New York"}, //query
       // $update query
       { $set : { location_country: "FUDGE!"}}, {multi: true});
db.m_country.update(
    {"countryId": "962a0935-bf3d-4f63-a53c-254760273ede"}, 
    {$set: {'countryPopulation': '12540000'}})

업데이트 전

> db.student.find({name:"Venky"}).pretty();

{
    "_id" : ObjectId("6012e64dc2979ddffe1e5df9"),
    "name" : "Venky",
    "dept" : "MCA",
    "age" : "26",
    "phone" : "89786465"

}

업데이트 명령

> db.student.update({name:"Venky"},{$set: {name:"DODDANNA CHAWAN",dept:"MCA(CS)", age:"25", phone:"1234567890"}});

찾기 명령 결과 참조

> db.student.find({name:"DODDANNA CHAWAN"}).pretty();

업데이트된 결과 이후

{
    "_id" : ObjectId("6012e64dc2979ddffe1e5df9"),
    "name" : "DODDANNA CHAWAN",
    "dept" : "MCA(CS)",
    "age" : "25",
    "phone" : "1234567890"

}

실제 환경에서 고유한 "_id"를 사용하여 문서를 일치시킵니다. 이름이 중복으로 발견되기 때문입니다.

언급URL : https://stackoverflow.com/questions/7756661/update-query-in-mongodb-shell

반응형