循环访问数组并执行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 });