Docs Menu
Docs Home
/
MongoDB マニュアル
/ / / /

$round

項目一覧

  • 定義
  • 構文
  • 詳細
$rand

間隔内の疑似ランダムの浮動小数点数を返します [ 0 、 1 )。 0が含まれ、 1は除外されます。

$rand の構文は次のとおりです。

{ $rand: {} }

このセクションの例は、文字通り埋め込みについて説明しています。 次のコレクションにはドナーのリストが含まれています。

db.donors.insertMany(
[
{ donorId: 1000, amount: 0, frequency: 1 },
{ donorId: 1001, amount: 0, frequency: 2 },
{ donorId: 1002, amount: 0, frequency: 1 },
{ donorId: 1003, amount: 0, frequency: 2 },
{ donorId: 1004, amount: 0, frequency: 1 }
]
)

次の例では、 donorsコレクション内の各ドキュメントをランダムなド金額でアップデートします。

db.donors.updateMany(
{},
[
{ $set:
{ amount:
{ $floor:
{ $multiply: [ { $rand: {} }, 100 ] }
}
}
}
]
)

空のアップデート フィルターは、コレクション内のすべてのドキュメントを一致させます。

各ドキュメントごとに、 $randを使用して0と1の間の値を生成し、 $multiplyで値をスケーリングします。

$floor演算子は小数部分を削除するため、更新されたamountは整数値になります。

コレクションを更新すると、ドキュメントは次のようになります。

{ "donorId" : 1000, "amount" : 2, "frequency" : 1 }
{ "donorId" : 1001, "amount" : 58, "frequency" : 2 }
{ "donorId" : 1002, "amount" : 27, "frequency" : 1 }
{ "donorId" : 1003, "amount" : 26, "frequency" : 2 }
{ "donorId" : 1004, "amount" : 42, "frequency" : 1 }

$rand演算子は、コレクションからランダムなドキュメントを選択するために使用できます。 投票者レコードのコレクション がある場合は次のようになります。

db.voters.insertMany(
[
{ name: "Archibald", voterId: 4321, district: 3, registered: true },
{ name: "Beckham", voterId: 4331, district: 3, registered: true },
{ name: "Carolin", voterId: 5321, district: 4, registered: true },
{ name: "Debarge", voterId: 4343, district: 3, registered: false },
{ name: "Eckhard", voterId: 4161, district: 3, registered: false },
{ name: "Faberge", voterId: 4300, district: 1, registered: true },
{ name: "Grimwald", voterId: 4111, district: 3, registered: true },
{ name: "Humphrey", voterId: 2021, district: 3, registered: true },
{ name: "Idelfon", voterId: 1021, district: 4, registered: true },
{ name: "Justo", voterId: 9891, district: 3, registered: false }
]
)

次のクエリは、地区3の投票者の約半数のランダムな選択を検索します。

db.voters.find(
{ district: 3,
$expr: { $lt: [0.5, {$rand: {} } ] }
},
{ _id: 0, name: 1, registered: 1 }
)

districtフィールドの最初の一致では、投票者が第 3 地域のドキュメントが選択されます。

$expr演算子は$randを使用してfind操作をさらに改良します。 各ドキュメントに対して、 $randは 0 から 1 の間の値を生成します。 0.5のしきい値がある場合、 ($lt)未満の比較はセット内のドキュメントの約半数について当てはまります。

地区 3 の投票者は 7 人で、コードを実行するとその約半数が選択されます。

{ "name" : "Beckham", "registered" : true }
{ "name" : "Eckhard", "registered" : false }
{ "name" : "Grimwald", "registered" : true }
{ "name" : "Humphrey", "registered" : true }

$rand (aggregation)

戻る

$natural