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

ドット表記でMongodbクエリが遅い

    explain() 出力は次のことを示唆しています:

    1. key.a : 456213154を持つ10962個のオブジェクトがあります 。 db.collection.find({"key.a": 456213154}) クエリはkey.aのインデックスを使用しました 、および10962オブジェクトを返しました。

    2. コレクションには、key.a : 456213154を持つオブジェクトが0個あります。 key.b : { $exists : true }があります 。 db.collection.find({"key": {"a": 456213154, "b": {"$exists":true}}}) クエリはキーのインデックスを使用しました。

    nを参照してください 各クエリの値-これは返される数値です。およびcursor 値-これはBtreeCursorです インデックスが使用されている場合。この場合、返されるオブジェクトが大幅に多いため、最初のクエリにはるかに長い時間がかかる理由は理にかなっています。

    key.a : 456213154のドキュメントを確認してください 値にはkey.bもあります 値?

    編集:

    $existsを使用したクエリ paramは、埋め込まれたドキュメント内の存在をチェックするための間違った構文です。

    db.collection.find({ "key.a" : 456213154, "key.b" : { "$exists" : true } })を試してください 。




    1. mongodb埋め込みコレクション内のアイテムの数を返すクエリ

    2. 更新/挿入にエラーがないか確認してください| MongoDBJavaドライバー

    3. Mongodb読み取り設定

    4. Mongodbインデックスはどのように機能しますか?