- 構文エラーは、
services.port_info
を引用符で囲む必要があるためです。 - ただし、
$elemMatch
ネストされたフィールドは現在サポートされていません とにかく - 幸い、
$elemMatch
は必要ありません。 この種のクエリの場合
これは次のことを行う必要があります:
db.hosts.find({ ip : "127.0.0.1"}, { "services.port_info.product" : "ssh" });
$elemMatch
配列オブジェクト内の複数の基準に一致させる場合に必要です。たとえば、「ポートが9000で、プロトコルがUDPであるすべてを検索する」などです。これは、データ構造ではサポートされていません。 port_info
の理由がわかりません オブジェクトの配列です(ポートが2つの異なるサービスに属する可能性がある不確実な状況の場合)-単一のオブジェクトの場合、$elemMatch
サポートされます。
また、このようなクエリは常にオブジェクト全体を返すことに注意してください。