2016-07-21 9 views
1

MongodbとIron:router(MeteorJSを初めて使用しています)を使用しているMeteorJSに小さなコードを書いています。すべてがうまくいきました。最初はうまくいきました。もっと説明するために、ウェブサイトのリストは、受け取ったアップアップと作成日に従ってソートする必要があります。ここでは、コードの関連セクションは次のとおりです。Meteor JSでソートする

//Sorting websites based on userfilter or votes 
websites:function(){ 
    if (Session.get("userFilter")){ 
    return Websites.find({ createdBy: Session.get("userFilter") }, { sort: { createdOn: -1, up: -1 }}); 
    } else { 
    return Websites.find({},{ sort: { createdOn: -1, up: -1 }}); 
    } 
}, 
{{#each websites}} 
    <div class="col-xs-12 col-md-3"> 
    <div class="thumbnail"> 
     <a href="{{url}}" class="site_name">{{title}}</a> 
     <p class="site_desc">{{description}}</p> 
     <br> 
     <p class="upvote_button">Upvote: {{up}}</p> 
     <p class="downvote_button">Downvote: {{down}}</p> 
     <a href="#" class="btn btn-default js-upvote" id="upvote_button"> 
     <span class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span> 
     </a> 
     <a href="#" class="btn btn-default js-downvote" id="downvote_button"> 
     <span class="glyphicon glyphicon-arrow-down" aria-hidden="true"></span> 
     </a> 
     <br> 
     <p class="added-by">Added By: 
     <a href="#" class="js-filter">{{getUser createdBy}}</a> 
     </p> 
     <p>Added On: {{createdOn}}</p> 
     <a href="/single_website/{{_id}}">Details</a> 
    </div> 
    </div> 
{{/each}} 

答えて

0

複数のプロパティに基づいて並べ替えを指定すると、Mongoはまず最初のプロパティでソートし、同じ「位置」にあるドキュメントについては2番目のプロパティを使用してそれらを並べ替えます

日付がである場合は、最初にcreatedOnの日付で、正確に同じ日付(存在する場合を含む)のものについてはソートされたドキュメント(ウェブサイト)が表示されます。私はこれがあなたが望むものではないと思います。

さらに、辞書/マッピングオブジェクトタイプを使用してソートを指定するので、JSエンジンの注文実装に依存します。ほとんどの場合、広告掲載オーダーでプロパティが注文されます(例:1)createdOn 2)up

http://docs.meteor.com/api/collections.html#sortspecifiers

あなたのJavaScript実装は、オブジェクト内のキーの順序を保持する場合は、[{a: 1, b: -1}]フォームのみ動作します。ほとんどの場合、ほとんどの場合、それはあなたの責任です。最後に

、あなたはこのソートのために見ているかもしれません:

Websites.find({}, { 
    sort: [ 
    ["up", "desc"], // Sort first by "up" value 
    ["createdOn", "desc"] // then for websites with same up value, order by date 
    ] 
}) 
0

あなたはこの

Websites.find({}).sort({createdOn:-1, up:-1}) 

ような何かをotの場合がありますが、それは

の作品を願って、この

を追加しようとしない場合
Websites.ensureIndex({createdOn: -1, up: -1}) 

ありがとう

関連する問題