$nin (配列内のいずれでもない)

最終更新:2026-10-09

$nin (配列内のいずれでもない)

$nin は、フィールドの値が指定した配列内のどの値とも等しくないドキュメントを選択します。$in の否定です。`{ age: { $nin: [18, 21] } }` は 18 でも 21 でもない年齢のユーザーに一致します。$ne と同様、フィールドが存在しないドキュメントには一致しません。配列フィールドに対しては、いずれかの要素が配列内にない場合に一致します。

カテゴリ比較
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

{ <field>: { $nin: [ <value1>, <value2>, ... ] } }

⚙️ パラメータ

フィールドマッチ対象のドキュメントフィールド。
値の配列除外する値のリスト。フィールドはいずれとも等しくない必要があります。

戻り値:一致するドキュメントのカーソル

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// $nin: 18 歳と 21 歳のユーザーを除外
db.users.find({ age: { $nin: [18, 21] } })

// フィールドが存在しないドキュメントは返されない
db.users.find({ age: { $nin: [18] } })

出力:

// age が 18 でも 21 でもないユーザーを返す。フィールドが存在しないドキュメントは除外

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

Q$nin と $ne の違いは?
A$ne は 1 つの値を除外し、$nin はリストを除外します。どちらも「等しくない」を意味し、$nin は複数値の一括版です。
Q$nin はフィールドが存在しないドキュメントを返しますか?
Aいいえ。$ne と同様、$nin はフィールドが存在し、その値が配列内にないドキュメントのみに一致します。
Q$nin は配列フィールドにどう一致しますか?
A単一の要素が指定配列内にない場合に一致します。配列全体に対して一度に判定するわけではありません。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%