循环访问数组并执行MongoDB查询(NodeJS)

我有一个对象名称configuration文件,其中包含一个像这样的collections夹arrays…

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

我想循环访问数组,获取每个collections夹的id,然后在我的mongo数据库的歌曲集合中为该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是asynchronous的)。

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

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

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