Mongodb中随机的查询文档记录
在实际应用场景中,几乎都会有随机获取数据记录的需求。而这个需求在 Mongodb 却不是很好实现,就目前而言,大致上有三种解决方案: 先计算出一个从 0 到记录总数之间的随机数,然后采用 skip(yourRandomNumber) 方法。 为每一条记录增设 random 字段,插入
在实际应用场景中,几乎都会有随机获取数据记录的需求。而这个需求在 Mongodb 却不是很好实现,就目前而言,大致上有三种解决方案:
- 先计算出一个从
0
到记录总数之间的随机数,然后采用skip(yourRandomNumber)
方法。 - 为每一条记录增设
random
字段,插入数据时赋值为Math.random()
,查询时采用$gte
和$lte
。 - 借助 Mongodb 对地理空间索引(
geospatial indexes
)的支持,从而可以在第二种方法的基础上来实现随机记录的获取。
因为 Mongodb 是不建议使用skip
方法的,所以这里就略去第一种方法吧。
方法二
> db.twitter.save({ username: 'heroic', random: Math.random(), content: 'balabala0...' }) > db.twitter.save({ username: 'heroic', random: Math.random(), content: 'balabala1...' }) > db.twitter.save({ username: 'heroic', random: Math.random(), content: 'balabala2...' }) > db.twitter.save({ username: 'heroic', random: Math.random(), content: 'balabala3...' }) > db.twitter.save({ username: 'heroic', random: Math.random(), content: 'balabala4...' }) /* more records... */ /* create index */ > db.twitter.ensureIndex({ username: 1, random: 1 }) > rand = Math.random() > result = db.twitter.findOne({ username: 'heroic', random: { $gte: rand } }) > if (result == null) { > result = db.twitter.findOne({ username: 'heroic', random: { $lte: rand } }) > }
方法三
> db.twitter.save({ username: 'heroic', random: [Math.random(), 0], content: 'balabala0...' }) > db.twitter.save({ username: 'heroic', random: [Math.random(), 0], content: 'balabala1...' }) > db.twitter.save({ username: 'heroic', random: [Math.random(), 0], content: 'balabala2...' }) > db.twitter.save({ username: 'heroic', random: [Math.random(), 0], content: 'balabala3...' }) > db.twitter.save({ username: 'heroic', random: [Math.random(), 0], content: 'balabala4...' }) /* more records... */ /* create index */ > db.twitter.ensureIndex({ username: 1, random: '2d' }) > result = db.twitter.findOne({ username: 'heroic', random: { $near: [Math.random(), 0] } })
更多关于 Mongodb 地理空间索引资料,请参见这里。
目前这几种方案似乎都不是很理想,但是也没有其他办法了,所以广大程序员们就相约到 Mongodb 的官方 jira 提了相应的需求,但是目前仍然没有任何的响应。可以参见这里,围观一下。
原文地址:Mongodb中随机的查询文档记录, 感谢原作者分享。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go フレームワークのドキュメントを使用するにはどうすればよいですか?ドキュメントの種類を決定します: 公式 Web サイト、GitHub リポジトリ、サードパーティのリソース。ドキュメントの構造 (入門書、詳細なチュートリアル、リファレンス マニュアル) を理解します。必要に応じて情報を見つけます。組織構造または検索機能を使用します。用語と概念を理解する: 新しい用語と概念を注意深く読んで理解します。実際のケース: Beego を使用して単純な Web サーバーを作成します。その他の Go フレームワークのドキュメント: Jin、Echo、Buffalo、Fiber。

この記事では、自動拡張を実現するためにDebianシステムでMongodbを構成する方法を紹介します。主な手順には、Mongodbレプリカセットとディスクスペース監視のセットアップが含まれます。 1。MongoDBのインストール最初に、MongoDBがDebianシステムにインストールされていることを確認してください。次のコマンドを使用してインストールします。sudoaptupdatesudoaptinstinstall-yymongodb-org2。mongodbレプリカセットMongodbレプリカセットの構成により、自動容量拡張を達成するための基礎となる高可用性とデータ冗長性が保証されます。 Mongodbサービスを開始:Sudosystemctlstartmongodsudosys

iPhone にアプリが読み込まれていませんか?アプリの読み込みに時間がかかるのは正常ではありません。まだベータ版のアプリを除き、iPhone で開くとすぐに読み込まれるはずです。一部の重いゲームを除いて、携帯電話上のすべてのアプリの読み込みが遅い、またはまったく読み込まれない場合は、以下の手順に従って問題を修正する必要があります。解決策 1 – アプリを更新する (該当する場合) しばらくアプリを更新していませんか?最新バージョンに更新すると、問題が解決されるはずです。ステップ 1 – AppStore を開きます。ステップ 2 – 検索ボックスにアプリの名前を入力し、候補から直接アプリを開きます。ステップ 3 – クリックしてスペシャルに移動します

この記事では、Debianシステムで非常に利用可能なMongoDBデータベースを構築する方法について説明します。データのセキュリティとサービスが引き続き動作し続けるようにするための複数の方法を探ります。キー戦略:レプリカセット:レプリカセット:レプリカセットを使用して、データの冗長性と自動フェールオーバーを実現します。マスターノードが失敗すると、レプリカセットが自動的に新しいマスターノードを選択して、サービスの継続的な可用性を確保します。データのバックアップと回復:MongoDumpコマンドを定期的に使用してデータベースをバックアップし、データ損失のリスクに対処するために効果的な回復戦略を策定します。監視とアラーム:監視ツール(プロメテウス、グラファナなど)を展開して、MongoDBの実行ステータスをリアルタイムで監視し、

Hash値として保存されているため、Navicatを介してMongoDBパスワードを直接表示することは不可能です。紛失したパスワードを取得する方法:1。パスワードのリセット。 2。構成ファイルを確認します(ハッシュ値が含まれる場合があります)。 3.コードを確認します(パスワードをハードコードできます)。

上級 Java 開発者向けに、公式ドキュメント (SpringBoot、Hibernate など) には、API リファレンスやベスト プラクティスを含む包括的な情報が提供されています。技術チュートリアル プラットフォーム (DZone、Baeldung など) では、高度な機能、設計パターン、コードの拡張性をカバーしています。オープンソース プロジェクト (GitHub、Maven など) では実際の実装を紹介し、ベスト プラクティスを学び、コミュニティのサポートを求めます。

MongoDB効率的なバックアップ戦略の詳細な説明CENTOSシステムでは、この記事では、データセキュリティとビジネスの継続性を確保するために、CENTOSシステムにMongoDBバックアップを実装するためのさまざまな戦略を詳細に紹介します。 Dockerコンテナ環境でのマニュアルバックアップ、タイミング付きバックアップ、自動スクリプトバックアップ、バックアップメソッドをカバーし、バックアップファイル管理のベストプラクティスを提供します。マニュアルバックアップ:MongoDumpコマンドを使用して、マニュアルフルバックアップを実行します。たとえば、Mongodump-Hlocalhost:27017-U Username-P Password-Dデータベース名-O/バックアップディレクトリこのコマンドは、指定されたデータベースのデータとメタデータを指定されたバックアップディレクトリにエクスポートします。

DebianシステムでMongoDBデータベースを暗号化するには、次の手順に従う必要があります。ステップ1:MongoDBのインストール最初に、DebianシステムがMongoDBをインストールしていることを確認してください。そうでない場合は、インストールについては公式のMongoDBドキュメントを参照してください:https://docs.mongodb.com/manual/tutorial/install-mongodb-onedbian/-step 2:暗号化キーファイルを作成し、暗号化キーを含むファイルを作成し、正しい許可を設定します。
