2

私はこのようなスキーマを持っています(簡略化)

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" }
});

ある言語を指定すると、その言語を参照するすべてのエントリと、各品詞を参照する_idすべてのエントリを含む結果セットを返すように、MongoDB にクエリを実行する簡単な方法はありますか?PartOfSpeechAttribute

結果セットは次のようになります。

[
   {
     name: "Noun",
     attributes: [
       { name: "Plural" },
       { name: "Possessive" }
     ]
   },
   {
     name: "Verb",
     attributes: [
       { name: "Past" },
       { name: "Future" }
     ]
   }
]

Mongooseでこれを行う簡単な方法はありますか?

4

1 に答える 1

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)
    })
  });
})
于 2012-08-23T22:46:05.563 に答える