0

MongoDBソート機能はかなりネイトです。データベース自体とは関係のないオブジェクトや配列でそれらを使用できますか?

var mongo       = require('mongodb'),
    Server      = mongo.Server,
    Db          = mongo.Db,
    sortingFun  = mongo.internalSortFilterFunction(); // By the miracle of imagination, this is a made-up line.

たとえば、MongoDBに触発された配列フィルタリングと呼ばれるこの素晴らしい小さなノードプロジェクトがあります。しかし、より類似したツール、異なる意見、およびマージと消滅のプロジェクトがあります。 sift

人気がMongoDBあることを考えると、たぶんぶらぶらするでしょう。そのため、さらに、非常に類似しているのではなく完全に類似しているという追加のボーナスとして、node-mongodb内の特定のオブジェクト/モデル/関数require('mongodb')を、カスタムオブジェクト/配列で並べ替えおよびフィルタリング関数を使用するために特別にリンクできるかどうか疑問に思いました。 。

4

1 に答える 1

0

並べ替えは、クライアントではなく、mongoサーバーで行われます。また、特に高速ではありません。大きなコレクションは事前に並べ替える必要がありますが、それは別の問題です。

mongoサーバーはC++で記述されたafaikであり、JSエンジンとは別のBSONと呼ばれるカスタムタイプを使用します。

したがって、JavaScriptのクライアントに並べ替えの実装がない場合、これはばかげた機能になりますが、サーバーの並べ替えを使用することはできません。

編集:本当にソートを使用したい場合は、パフォーマンスを低下させて、jsオブジェクトをDBに挿入し、mongoコレクションでそれらをBSONに効果的に変換できます。次に、それをソートしてDBからプルします。その関数を呼び出すたびに、インデックスなどを再作成する必要があります。Mongodbは、インデックスのない大きなコレクションの並べ替えも拒否します(制限は約1000だと思います)

PS。ソースを読んでいません。MongoDBのソートespの速度に一致するJSリアルタイムのインデックスレスソートを想像することはできません。配布時(シャーディング)。ただし、node.jsモジュールはC ++で記述でき、BSONがV8 JSオブジェクトと十分に類似している場合(そうは思わないでしょう)、移植できる可能性があります。JSで再実装する場合に比べて、速度が大幅に向上することはおそらくないので、その道を進むことはありません。再実装は、作成と保守がはるかに簡単です。

于 2012-09-17T16:00:54.170 に答える