我有这样的架构(简化)
var Language = new Schema({
name: String
});
var PartOfSpeech = new Schema({
name: String,
language: { type: ObjectId, ref: "Language" }
});
var Attribute = new Schema({
name: String,
partOfSpeech: { type: ObjectId, ref: "PartOfSpeech" }
});
是否有一种简单的方法可以查询MongoDB,例如,在给定语言的_id
的情况下,它会返回一个结果集,其中包含引用该语言的所有PartOfSpeech
条目,以及所有Attribute
}引用每个词性的条目?
结果集看起来像这样:
[
{
name: "Noun",
attributes: [
{ name: "Plural" },
{ name: "Possessive" }
]
},
{
name: "Verb",
attributes: [
{ name: "Past" },
{ name: "Future" }
]
}
]
在Mongoose中有直接的方法吗?
答案 0 :(得分:2)
类似这样的事情
PartOfSpeech.find({ language: langId }, function (err, parts) {
if (err) return done(err);
var pending = parts.length;
if (0 === pending) return done(null, parts);
parts.forEach(function (part) {
Attr.find({ partOfSpeech: part }, function (err, attributes) {
if (err) return done(err, parts);
part.attributes = attributes;
if (--pending) return;
done(null, parts)
})
});
})