2013-05-03 8 views
16

私は取り込まれたドキュメントをコレクションから取り出したいと思っています。要求する際にエラーが発生します。検索された文書を並べ替えるには?

のは

Group 
    .find({}) 
    .populate('Members') 

作品完全ドキュメントGroup(グループ)と 'メンバー'(Group.Membersを)認めるましょうが、私はそれをソートしたいと思いますので、私はこれを行う:

Group 
    .find({}) 
    .populate('Members', ['_id', 'name'], null, { sort: [[ 'created_at', 'desc' ]] }) 

これを追加してエラーTypeError: Invalid select() argument. Must be a string or object.を取得します。

答えて

14

上記の例は、Mongoose 3.xで動作しますが、synwtax:

を使用してください
Group 
    .find({}) 
    .populate('Members', '_id name', null, { sort: { 'created_at': -1 } }) 
39

また、暗黙的に移入するだけで必要なパラメータを指定することができます。

Group 
    .find({}) 
    .populate({path: 'Members', options: { sort: { 'created_at': -1 } } }) 

はこの構文http://mongoosejs.com/docs/api.html#document_Document-populate

+0

ソートが機能していません –

+0

これは動作しませんでした – mtro

6

ATとマングース4.xの使用のために見てください:

Kitten.find().populate({ 
    path: 'owner' 
    , select: 'name' 
    , match: { color: 'black' } 
    , options: { sort: { name: -1 }} 
}).exec(function (err, kittens) { 
    console.log(kittens[0].owner.name) // Zoopa 
}) 

// alternatively 
Kitten.find().populate('owner', 'name', null, {sort: { name: -1 }}).exec(function (err, kittens) { 
    console.log(kittens[0].owner.name) // Zoopa 
}) 

リファレンス:Mongoose docs

+3

それは私にとっては役に立ちません。 –

+0

また、私はmongooseのsortオプションの動作の正確な参照を見つけることができません。 しかし、オプションは、path、select、model、およびmatchの後の代替構文の5番目のパラメータです。 –

+0

@NicoPasserini申し訳ありませんが、あなたのために動作しない場合は、答えにリンクされている公式ドキュメントの正確な例です。だからあなたはおそらくsthを間違っている。 – Wtower

0

次は、マングースのv5.0.5で私のために働い:

Schedule.find({}) 
 
     .populate({path: 'eventComments', options: {sort:{"commentDate": "descending"}}}) 
 
     .exec(function(err, result) { 
 
      if (err) { 
 
       throw err 
 
      } 
 

 
      else { 
 
       return res.json(result); 
 
      } 
 
    });

P.S.この例とKittenの例の主な違いは、commentDateは引用符で囲まれていますが、の日付(Kittenの例では)はありません。この変更はあなたの中には必要かもしれません。お役に立てれば。

関連する問題