我有一个对象名称配置文件,其中包含一个看起来像这样的收藏夹数组......
{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是异步的。)
做这样的事情的正确方法是什么?
答案 0 :(得分:2)
您可以使用$in
查询与指定数组中的任何值匹配的字段。
favoritesId = favorites.map(function(favorite){ return favorite.id; });
db.songs.find({ _id: { $in: favoritesId }}, function(err, songs){
// do you favor
});