문서 내의 배열을 업데이트하려고하는데 제대로 작동하지만 upsert로 새 요소를 추가하려고 할 때 오류를 실행하는 방법이 실패합니다. 나는 몇 시간 동안 구글에서 검색을 해왔고 mongodb 문서와 내가 시도한 것은 작동 할 수 없다.mongo 및 upsert의 배열 업데이트
컬렉션의 구조는 다음과 같습니다
{
"name" : String,
"providerId": Number,
"description": String,
"providers": [
{
"merchantId": String,
"name": String,
"valid": Boolean,
"data": String
},
{
"merchantId": String,
"name": String,
"valid": Boolean,
"data": String
},
{
"merchantId": String,
"name": String,
"valid": Boolean,
"data": String
}
]
}
사용이 쿼리는 기존 데이터를 업데이트 :이 제대로 올바르게 나에게 배열의 요소를 업데이트 워킹
db.collection.update({ "providerId": ID, "providers": { $elemMatch: { "merchantId": MERCHANTID }}}, { $set: {
"providers.$.merchantId": MERCHANTID,
"providers.$.name": NAME,
"providers.$.valid": true,
"providers.$.data": DATA
}});
. 요소가 존재하지 않을 때 항목 추가 여부를 알지 못하고 추가 할 수 있지만 가능한 경우 upsert ({upsert : true}) 매개 변수를 추가하려면 검사하지만 다음 오류가 발생합니다. 나는 그것이 어떤 객체 검색도 반환하지 않기 때문이라고 생각한다.
MongoError :
이
오류 인 위치 연산자는 쿼리에서 필요로 경기를 찾지 못했습니다. 확장되지 않은 업데이트 : 공급자. $. 이름배열의 하위 문서에서 데이터를 업데이트하는 방법이 있습니까? 존재하지 않는 경우 새 문서를 추가 할 수 있습니까? 연산자 $로 검색하려고했는데 오류가 발생했습니다. 또한 다양한 방법 ({ "providers.merchantId": MERCHANTID}) 및 기타 검색 방법을 조사합니다.
감사
'제공자. $. merchantId'의 $이 (가) 불려지거나 문서화 된 것을 알려주십시오. 몇 가지 이상한 문제가 발생하고 정확히 무엇이 문제인지 파악하려고합니다. – Chris