查询forEach中的其他集合

时间:2014-12-02 18:12:26

标签: javascript mongodb

我想做类似的事情:

db.ratings.find().forEach(function(doc){

  var item = db.items.find({_id: doc.item_id})
  var ry = item.detail.ry
  db.ratings.update(doc,{$set: {itd: ry}})

})

问题是db.items.find({_id: doc.item_id})正在返回一些我无法直接调用文档属性的内容。这样做的正确方法是什么?谢谢!

db.items:

{
    "_id" : ObjectId("5461c8f0426f727f16000000"),
    "n" : "The Shawshank Redemption",
    "detail" : {
      "ry": 1992
    }
}

1 个答案:

答案 0 :(得分:14)

find()函数返回cursor,您需要迭代它:

  

当find()方法“返回文档”时,实际上是方法   将光标返回到文档

您的代码已更新:

db.ratings.find().forEach(function(doc){

  db.items.find({_id: doc.item_id}).forEach(function(item){
   var ry = item.detail.ry;
   db.ratings.update(doc,{$set: {itd: ry}});
   })
})

或者您可以使用findOne()返回其中一个匹配的文档。

db.ratings.find().forEach(function(doc){

  var item = db.items.findOne({_id: doc.item_id})
  var ry = item.detail.ry
  db.ratings.update(doc,{$set: {itd: ry}})

})