我有一个像这样的mongo系列
{"stores": [{"name": "foo",
"songs": [ {"id": "", "name": "", "artist": "", "category": "", "tags": []} ],
"songsSchedule": [
{
"song_id": "",
"date": ,
"user": "",
"help": ,
"partners": [{"user": ""}],
"likes":
}
]
}]}
我想从Songschedule Song_id中获得歌曲名称和艺术家,我尝试过,但它不起作用
var query = { _id: fn.generateID(req.params.store_id), songsSchedule: { $exists: true } };
var select = { songsSchedule:1 };
var array = [];
client("stores", function(err, collection) {
if (err)
return res.json(fn.status("30"));
collection.findOne(query, select, function(err, store) {
if (err || !store)
return res.json(fn.status("31"));
for (var i in store.songsSchedule) {
var song = store.songsSchedule[i];
array.push(song.song_id);
}
collection.find({ _id: fn.generateID(req.params.store_id), "songs._id": { $in: array } }, function(err, songs) {
res.json(songs);
});
});
});
我真的不知道这是否是最好的方法
我并不完全清楚您的意思是"从歌曲中获取歌曲名称和艺术家Song_id",但看来查询会很混乱。
如果是我,我会考虑将歌曲和歌曲划分为自己的收藏,以更轻松地查询。
在您的文档示例中,"歌曲"字段包含不包含" _id"字段的文档。
"songs": [ {"name": "", "artist": "", "category": "", "tags": []} ]
但是,您的find()查询在" songs._id"字段上查询。
另外,我对JSON()方法不太熟悉,但是它是否处理光标?
问:
kay