$densify (密度補間)
最終更新:2026-10-09
$densify (密度補間)
$densify は、欠落した中間のフィールド値でドキュメントを生成します。時系列の補間に典型的で、1 時間ごと・1 日ごとなどの固定ステップでギャップを埋めます。数値フィールドにも対応しています。フィールド、レンジ(ステップ、単位、境界)、オプションの partitionByFields を指定します。
| カテゴリ | グループ化とウィンドウ |
|---|---|
| MongoDB バージョン | 5.1+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $densify: { field: "<field>", range: { step: <step>, unit: <unit>, bounds: <bounds> }, partitionByFields: [ ... ] } }
⚙️ パラメータ
| field | 密にするフィールド。数値または日付である必要があります。 |
|---|---|
| range | ステップ、単位(日付の場合)、および境界範囲を定義するオブジェクト。 |
| partitionByFields | パーティションのフィールド。各パーティションは個別に密化されます。 |
戻り値:欠落値を補完したドキュメントストリーム
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $densify: 気温データを 1 時間ごとに補間
db.temperature.aggregate([
{ $densify: {
field: 'date',
range: { step: 1, unit: 'hour', bounds: 'full' }
} }
])
出力:
// 欠落した時間が埋められ、他のフィールドはコピーされる
📌 注意事項
- 数値フィールドと日付フィールドのみ対応
- partitionByFields を指定するとパーティションごとに独立して補間する
- bounds には full、パーティション境界、明示的な配列を指定できる
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q$densify は何に使いますか?
A固定ステップで欠落した時点を埋め、チャートや補間が完全な系列で動くようにします。
Qどの単位が使えますか?
A時間単位には minute、hour、day、week、month、quarter、year などがあります。
Q$densify はどれくらいのドキュメントを生成しますか?
Aステップと境界に依存します。広いレンジと細かいステップは多数のドキュメントになるため、メモリに注意してください。