sql >> データベース >  >> NoSQL >> MongoDB

モンゴコンプレックスソーティング?

    更新: この回答は古くなっているようです。 $projectを使用することで、カスタムの並べ替えを多かれ少なかれ実現できるようです。 ソート前に入力ドキュメントを変換する集約パイプラインの機能。 @Ariの回答も参照してください。

    これが直接可能だとは思いません。ソートのドキュメントには、カスタム比較機能を提供する方法は確かに記載されていません。

    クライアントで並べ替えを行うのがおそらく最善ですが、サーバーで並べ替えを行うことに本当に決心している場合は、db.eval()を使用できる可能性があります。 サーバー上でソートを実行するように調整します(クライアントがそれをサポートしている場合)。

    サーバー側の並べ替え:

    db.eval(function() { 
      return db.scratch.find().toArray().sort(function(doc1, doc2) { 
        return doc1.a - doc2.a 
      }) 
    });
    

    同等のクライアント側ソートとの比較:

    db.scratch.find().toArray().sort(function(doc1, doc2) { 
      return doc1.a - doc2.b 
    });
    

    集計パイプラインと$orderbyで並べ替えることも可能です。 演算子(つまり、.sort()に加えて )ただし、これらの方法のどちらでも、カスタムの並べ替え機能を提供することはできません。



    1. Redisキーが期限切れにならないのはなぜですか?

    2. apollostack/graphql-server-リゾルバーからクエリで要求されたフィールドを取得する方法

    3. RedisデータをMySQLに同期するための最良の戦略は何ですか?

    4. mongoDBコレクションから配列を取得するにはどうすればよいですか?