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

$sampleを使用したMongoDBの集約が非常に遅い

    3.6Slow$sampleの問題が続く場合は何も変更されていないことを確認できます。

    小さなドキュメントの最大4,000万のコレクション、インデックスなし、Windows Server2012x64。

    storage:wiredTiger.engineConfig.journalCompressor:zlibwiredTiger.collectionConfig.blockCompressor:zlib

    2018-04-02T02:27:27.743-0700Iコマンド[conn4]コマンドmaps.places

    コマンド:aggregate {aggregate: "places"、pipeline:[{$ sample:{size:10}}]

     cursor: {}, lsid: { id: UUID("0e846097-eecd-40bb-b47c-d77f1484dd7e") }, $readPreference: { mode: "secondaryPreferred" }, $db: "maps" } planSummary: MULTI_ITERATOR keysExamined:0 docsExamined:0 cursorExhausted:1 numYields:3967 nreturned:10 reslen:550 locks:{ Global: { acquireCount: { r: 7942 } }, Database: { acquireCount: { r: 3971 } }, Collection: { acquireCount: { r: 3971 } } }
    

    protocol:op_query 72609ms

    本格的なプロジェクトでこの「モダンでパフォーマンスの高いDBMS」を試すためにMongoをインストールしました。どれほど深くイライラしています。

    計画の説明はこちら:

    db.command('aggregate', 'places', pipeline=[{"$sample":{"size":10}}], explain=True)
    

     {'ok': 1.0,
      'stages': [{'$cursor': {'query': {},
        'queryPlanner': {'indexFilterSet': False,
         'namespace': 'maps.places',
         'plannerVersion': 1,
         'rejectedPlans': [],
         'winningPlan': {'stage': 'MULTI_ITERATOR'}}}},
      {'$sampleFromRandomCursor': {'size': 10}}]}
    


    1. 正規表現クエリを使用して配列フィールドでMongodbを区別しますか?

    2. 配列フィールドにMongoDBの一意の値または別の配列が含まれているかどうかを確認するにはどうすればよいですか?

    3. Mongoose VersionError:ドキュメントの保存時にidに一致するドキュメントが見つかりません

    4. ループで呼び出されたDBクエリから取得したデータを返す際の問題