3

これが私のスキームです。私は単一のオブジェクトqueryを取得all documentsしてすべてのオブジェクトのドキュメントを取得したいと考えています。

var CureSchema = mongoose.Schema({

            id:         Number,
            therapist:  {type:mongoose.Schema.Types.ObjectId, ref:'User'},
            supervisor: {type:mongoose.Schema.Types.ObjectId, ref:'User'},
            parents:    {type:mongoose.Schema.Types.ObjectId, ref:'User'},
            children:   {type:mongoose.Schema.Types.ObjectId, ref:'Child'},
            startate :  Date,
            endDate :   Date,
            deleted:    Boolean,
    });

    var Cure = mongoose.model('Cure', CureSchema); 

通常のクエリを使用するobjectIdと、出力が得られます。

{

     "id":0,

  "therapist":ObjectId("5253cbd8d4fb240000000007"),

  "supervisor":ObjectId("5253cc9fd4fb24000000000b"),

  "parents":ObjectId("5253cbdfd4fb240000000008"),

  "children":ObjectId("5253cb31d4fb240000000001"),
  "deleted":false,

  "startate":   ISODate("2013-10-08T09:13:06.771Z"),

 "_id":ObjectId("5253cca2d4fb24000000000c"),
 "__v":0 

}

4

2 に答える 2

3

ドキュメントは 3 つの異なるコレクションに属しているため、技術的には mongodb の 1 つのクエリでそれを行うことはできません。Mongoose はおそらく 5 つのクエリを実行する必要があります (ただし、3 つあれば十分だと思いますが、Mongoose がどれほど賢いかはわかりません)。

ただし、本当に求めているのが、1 つのマングース命令のみを使用してサブドキュメントを取得する方法である場合は、populate()を確認する必要があります。

Cure.find()
  .populate('therapist')
  .populate('supervisor')
  .populate('parents')
  .populate('children')
  .exec(resultHandler);
于 2013-10-14T09:09:33.043 に答える