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

mongo$sliceクエリの逆インデックスが範囲外です

    はい。これが、javascript Array.prototype.slice()の方法です。 メソッドは機能します。これはmongodbによって内部的に使用されます。

    ECMAScript®言語仕様 によると 、

    あなたの場合、relativeStart is -10k = max((-10+5),0), k = 0; (ここで、5 は配列の長さです。

    したがって、k またはskip 常に0になります 、これらの場合。

    はい、射影演算子はそのように機能します。 inclusionでない限り またはexclusion が射影パラメータで明示的に指定されている場合、ドキュメント全体が$sliceなどの射影演算子を使用して取得されます。 、$elemmatch 適用されています。

    db.items.findOne({},{"_id":1,"List": { "$slice": [-10, 3 ] }})
    

    返されます:

    { "_id" : ObjectId("542babf265f5de9a0d5c2928"), "List" : [ 1, 2, 3 ] }
    

    findOne()の2番目のパラメーター メソッドはnot only for simple projection 目的、フィールドはない fieldのいずれかが 名前の値は0 または1 彼らに対して。そうでない場合は、ドキュメント全体が返されます。いずれかのフィールドにprojection operatorがある場合 適用される場合は、applied およびprojected

    投影メカニズムのようです $sliceの場合は常に、以下の方法で発生します オペレーターが関与しています。

    • デフォルトでは、すべてのフィールドが投影に含まれます。
    • デフォルトでは、値が射影演算子$sliceに基づいて導出されるすべてのフィールド 、真実の場合 、以下に関係なく、常に表示されます。

    除外または包含のために行われる手順。

    • 射影パラメータで指定されたフィールドのリストは、指定された順序で累積されます。
    • 値「0」または「1」で検出された最初のフィールドのみ :フィールドの値が「0」の場合は除外され、残りのすべてのフィールドが含まれるようにマークされます。フィールドの値が「1」の場合は含まれ、残りのすべてのフィールドが除外されるようにマークされます。
    • 後続のすべてのフィールドについて、それらの値に基づいて除外または含まれます。


    1. MongoDB:配列オブジェクトをコレクションに保存したい

    2. mongodbのネストされたドキュメントでクエリを実行します

    3. なぜ必要なのか、マングースを使用する利点は何ですか

    4. Mongoシェル履歴ファイルまたはWindows上のすべての履歴にアクセスする方法