2016-07-01 3 views
1

MongoDB에 두 개의 콜렉션 x와 y가있는 데이터베이스가 있습니다. 필드 x.Venue = y.name x.club = y.team을 업데이트하려고합니다. mongoDB에서 다음 코드를 시도했습니다. 만약 내가 잘못MongoDB에서 콜렉션을 업데이트하는 중 오류가 발생했습니다.

db.x.find().forEach(function(myDoc) { 
     var temp = db.y.findOne({"team" : myDoc.club}); 
     if (temp) { 
      myDoc.Venue = temp.name; 
      db.x.save(myDoc); 
     } 
}); 

이제 저를 수정 한하여 mydoc varibale는 임시 데이터가 정확하고 myDoc.Venue가 제대로 할당되고 있음을 확인한 foreach는 쓸만에 대한 커서입니다. , 나는 다음과 같은 오류가 발생합니다.

2016-07-01T23:43:58.382+0530 E QUERY [thread1] Error: error: { 
    "waitedMS" : NumberLong(0), 
    "ok" : 0, 
    "errmsg" : "cannot compare to undefined", 
    "code" : 2 
} : 

[email protected]/mongo/shell/utils.js:25:13 
[email protected]/mongo/shell/query.js:689:1 
[email protected]/mongo/shell/query.js:118:28 
[email protected]/mongo/shell/query.js:276:5 
[email protected]/mongo/shell/collection.js:289:10 
@(shell):1:61 
[email protected]/mongo/shell/query.js:488:1 
@(shell):1:1 

이 오류를 해결할 수있는 사람이 있습니까?

답변

2

동일한 유형의 문제에 직면하고 있습니다. 이 오류는 db 속성/필드으로 정의하지 않은 경우과 비교하려는 경우에 발생합니다. 비교하기 전에 먼저 확인해야합니다.

myDoc.clubundefined 인 경우이 오류가 발생했습니다.

그래서이 일

db.x.find().forEach(function(myDoc) { 
     if(myDoc.club){ 
      var temp = db.y.findOne({"team" : myDoc.club}); 
      if (temp) { 
       myDoc.Venue = temp.name; 
       db.x.save(myDoc); 
      } 
     } 
}); 
을 시도 할 수 있습니다
관련 문제