2016-07-01 74 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是光标对foreach function.i验证了临时的数据是正确的,正确地被分配myDoc.Venue。虽然,我得到以下错误。

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

我正面临同样类型的问题并解决。当您想要比较分贝物业/字段undefined时发生此错误。所以你应该在比较之前先检查。

何时比较{"team" : myDoc.club}在您的查询中,因为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); 
      } 
     } 
});