2017-03-25 19 views
-1

私はPythonでMongoDBを使用しています。私は私の文書を挿入するには、次のコマンドを使用:PythonとMongoDB - データを降順に格納

db.test.insert_one({"Name": name, "Age": age}) 

nameageは自分のコード内の変数です)

私が最年少に最古の頃から並べ替えるには、次のコマンドを使用:

db.test.find().sort("Age", 1) 

私はコード内で単にfindコマンドを発行していることを理解しています。 db.test.save()メソッドを使用してドキュメントをソートし、ソートされたドキュメントで元のイメージを上書きする巧妙な方法はありますか? How to store sorted array back to MongoDB?

しかしupdate_one$pushのコマンドを実行し、$sort機能を使用するために が、私は私の全体のコードを再作業する必要があります:

私は多少このようなこの問題に対処する多くの質問に見えました。私の選択肢は何ですか?コードを再作成する必要があるのですか、別の方法がありますか?

答えて

2

あなたはモンゴで二つの概念を混同している:文書に埋め込まれた配列をソートし、いくつかのプロパティでコレクション内の文書をソートします。

あなたがにリンクポストは、前者を指します。あなたはコレクション内の文書を永続的にソートしようとしているようです。

Mongoは書かれた順序で書類を保管します。ほとんどのデータベースと同様に、索引を使用してデータをより効率的に検索します。あなたが記述例で

、あなたの文書の年齢プロパティにインデックスを作成します。

使用のいずれかensure_indexまたはcreate_index機能:

db.test.ensure_index("Age", pymongo.DESCENDING) 

今後、

db.test.find().sort("Age", -1) 

などのすべてのクエリがインデックスを使用し、非常に高速になります。

ソート済みの別のコレクションにドキュメントを書き直し、簡単なフェッチが常に年代順に戻ってくるかどうかを確認することができます。しかし、これは本当にモンゴについて考える正しい方法ではありません。

+0

私はそれにアプローチしなければならない方法は、自分のデータを並べ替えて別のコレクションに格納することだと思います。どうすればいい? – ss1111

+0

したようにクエリを実行し、それらのドキュメントを別のコレクションに挿入します。しかし、私は誰もそれのようなモンゴーを使用することを見たことがない。 –

+0

mongoを使用する適切な方法は何ですか?私は、ExpressJSを使用してdbからフロントエンドにデータをプルしようとしています。私がやっていることをやめ、フロントエンドに問い合わせてデータを並べ替えるだけでいいですか? – ss1111

関連する問題