2016-07-01 6 views
1

MongoDBに2つのコレクション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 function.iのカーソルです。しかし、私は次のエラーを取得します。

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 プロパティ/フィールドとを比較したい場合に発生します。定義されていないです。比較の前にまずチェックしてください。

{"team" : myDoc.club}と照会した場合、myDoc.clubundefinedであるため、このエラーが発生しました。

ので、この1

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); 
      } 
     } 
}); 
を試すことができます
関連する問題