循环遍历数组并执行MongoDB查询(NodeJS)

时间:2015-07-28 19:02:51

标签: javascript node.js mongodb for-loop mongodb-query

我有一个对象名称配置文件,其中包含一个看起来像这样的收藏夹数组......

{favorites: [
    { name: 'Love Song',
      id: 'Itja90E2tIE'},
    { name: 'I Need Your Love',
      id: 'AtKZKl7Bgu0'}
]}

我想循环遍历该数组,获取每个收藏夹的ID,并在我的mongo DB的歌曲集合中为该ID执行.find(),获取该歌曲的艺术家,并将其添加到数组。

我尝试过像......

for(var i=0; i<profile.favorites.length; i++) {
    db.songs.find({"_id" : profile.favorites[i].id}, {"artistName" : 1}, function (e, result){
            profile.favorites[i]["artistName"] = result[0].artistName;
        });
    }

但这似乎不起作用,(主要是因为Mongo / MongoJs是异步的。)

做这样的事情的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

您可以使用$in查询与指定数组中的任何值匹配的字段。

favoritesId = favorites.map(function(favorite){ return favorite.id; });

db.songs.find({ _id: { $in: favoritesId }}, function(err, songs){
  // do you favor 
});