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

Looping through array and executing MongoDB query (NodeJS)

本文关键字:查询 NodeJS MongoDB 执行 遍历 数组 循环      更新时间:2023-09-26

我有一个对象名称配置文件,它包含一个收藏数组,看起来像这样…

{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是异步的)

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

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

favoritesId = favorites.map(function(favorite){ return favorite.id; });
db.songs.find({ _id: { $in: favoritesId }}, function(err, songs){
  // do you favor 
});