我有一个这样的mongo收藏品
{"stores": [{"name": "foo",
"songs": [ {"id": "", "name": "", "artist": "", "category": "", "tags": []} ],
"songsSchedule": [
{
"song_id": "",
"date": ,
"user": "",
"help": ,
"partners": [{"user": ""}],
"likes":
}
]
}]}我想从the songsSchedule 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);
});
});
});我真的不知道这是不是最好的方法
发布于 2012-11-09 00:12:25
我不完全清楚你所说的“从songsSchedule song_id获取歌曲名称和歌手”是什么意思,但是这个查询看起来会很混乱。
如果是我,我会考虑把歌曲和songSchedule拆分到各自的集合中,以便于查询。
发布于 2012-11-09 01:41:37
在您的文档示例中,“歌曲”字段包含不包含"_id“字段的文档。
"songs": [ {"name": "", "artist": "", "category": "", "tags": []} ]但是,您的find()查询是在"songs._id“字段上查询的。
另外,我不太熟悉json()方法,但是它能处理游标吗?
致以敬意,
Kay
https://stackoverflow.com/questions/13292393
复制相似问题