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

マングースでランダムな記録を見つける方法

    ランダムレコードを取得する背後にある考え方は、一致するすべてのレコードをクエリすることですが、1つだけを取得します。これがfindOne()です 与えられた基準なしで行います。

    次に、可能なすべての一致でランダムなエントリを選択する必要があります。これは次の方法で行われます:

    1. 可能なエントリの数を調べます-count()を使用します このためのコレクションに。コメントで述べたように、countに注意してください バージョン4では廃止されており、代わりにestimatedDocumentCountまたはcountDocumentsを使用する必要があります。違いは、とりわけ精度/メモリ使用量にあります。これが少し議論しているSOの投稿です。

    2. 私たちのカウント内でランダムな数を考え出します。

    3. skip()を使用する 目的の一致に「スキップ」して、それを返します。

    このSO回答から変更されたスニペットは次のとおりです:

    // Get the count of all users
    User.count().exec(function (err, count) {
    
      // Get a random entry
      var random = Math.floor(Math.random() * count)
    
      // Again query all users but only fetch one offset by our random #
      User.findOne().skip(random).exec(
        function (err, result) {
          // Tada! random user
          console.log(result) 
        })
    })
    


    1. Javaドライバーを使用してmongodbのドキュメントのフィールドを更新するにはどうすればよいですか?

    2. Node.jsとMongoDBを使用してURL短縮サービスを構築する方法

    3. MongoDBにフィールドが存在するかどうかを確認するにはどうすればよいですか?

    4. フィールド値によるハッシュのRedis検索