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

配列のMongoDBページ付け-$sliceが配列の先頭に到達したかどうかを確認します

    1つの方法は、 $ condを使用することです。 演算子:

    クエリ:

    let inputPosition = -70
    let positionConverted = -position // 70
    let maxNumber = 1000
    
    db.collection.aggregate([
        {
          $project: {
            comments: {
              $slice: [ "$comments",
                { $cond: [ { $gte: [ { $size: "$comments" }, positionConverted ] }, inputPosition, maxNumber ] }, 5 ] }
          }
        }
      ])
    

    テスト: mongoplayground

    説明:

    したがって、 $ slaveの構文 は{$スライス:[<配列>、<位置>、]} それから、 に配列のサイズより大きい値を渡すと 次に、応答として空の配列を取得します。

    ここでは$condを使用しています inputPositionのいずれかの値を条件付きで送信します またはmaxNumberの値 へ 。さらに、 maxNumberの値をハードコーディングしました 1000へ ただし、一般的にはすべて選択によって異なります。使用できる数値は小さくてもかまいません。その数値は配列のサイズよりも大きい値にする必要があります。配列のサイズ+1 ただし、配列が常に1000未満であると思われる場合は、その操作を実行する代わりに、 1000を直接使用してください。 。

    参照: $ slice



    1. マングースモデルTypeError:スキーマはコンストラクターではありません

    2. Django CeleryElasticBeanstalkはそのようなプロセスエラーを監視していません

    3. MongoEngineはインデックス(作成、更新、削除)をどのように処理しますか?

    4. ssh経由で起動するときのDockerコンテナmongodエラー