2017-09-13 18 views
1

私は、この文書があります。mongodbのドキュメントや埋め込みドキュメントで "_id"でソートするには?

{ 
    "_id" : ObjectId("5993e9ee92cf241648002a97"), 
    "name" : "test" 
    "subcategories" : [ 
     { 
      "_id" : ObjectId("59953f20f4b8cf0595720e62"), 
      "name" : "subtest", 
     }, 
     { 
      "_id" : ObjectId("59953f20f4b8cf0595720e63"), 
      "name" : "subtest2", 
     } 
    ] 
}, 
{ 
    "_id" : ObjectId("5993e9ee92cf241648002a98"), 
    "name" : "test2" 
    "subcategories" : [ 
     { 
      "_id" : ObjectId("59953f20f4b8cf0595720e66"), 
      "name" : "subtest3", 
     }, 
     { 
      "_id" : ObjectId("59953f20f4b8cf0595720e69"), 
      "name" : "subtest4", 
     } 
    ] 
} 

をそして私はマングースを使っ_idの両方によって、文書や埋め込みドキュメントをソートしたいです。

このような何か:

categoryModel.find({ }).sort({ _id: 1, "subcategories._id": 1 }).exec(function (err, data) {}); 

しかし、私はちょうど"_id:1" 知っているが動作します。
どうすればいいですか?

+0

あなたは何を意味するのですか?でそれを行いますかソート "ドキュメント"が返されますか?または、 "**ドキュメント内の配列要素**をソートする"が返されますか?また、配列が定義された順序で "格納"できないいくつかの理由がありますか?また、デフォルトでは、配列には「最新のもの」があることに注意してください。 –

+0

@NeilLunn私の質問を更新する – WithoutBrain1994

+0

サーバー側ですべてのカテゴリを選択し、 'サブカテゴリ 'を並べ替えることができます:' ... exec() .then(cats => { cats.each(cat => cat 'サブカテゴリ(サブカテゴリ)が必要なときになぜそれが必要なのですか? '配列はすでに' _id'によって順序付けされていますか? – alexmac

答えて

1

JS

subcategories.sort(function(a, b) { 
      return a._id.toString().localeCompare(b._id.toString()); 
     }); 
1

populate関数とsortオプションを使用してサブ文書を並べ替えることができます。

categoryModel 
    .find({}) 
    .populate(
     {path: 'subcategories', options: { sort: { '_id': -1 } } } 
    ) 
+0

私は人口は2つのモデルのためだと思う、私はちょうど1つのモデルを持っている – WithoutBrain1994

関連する問題