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