他のフィールドにもハード制約がある部分的なフィールドマッチングのためにregexを使って検索できる複数のフィールドを受け入れるクエリを構築しようとしています。
例:
コレクション: "プロジェクト"
必要情報:{propertyId: "ABC"、のclientId: "XYZ"}、検索する
フィールド:name
、serviceType.name
、manager.name
現在私はこのようなクエリを持っていますが、結果がない場合はすべての結果が返されますが、これは役に立ちません。
{
'$and': [
{ propertyId: '7sHGCHT4ns6z9j6BC' },
{ clientId: 'xyz' },
{ '$or':
[
{ name: /HVAC/gi },
{ 'serviceType.name': /HVAC/gi },
{ 'manager.name': /HVAC/gi }
]
}
]
}
これについての洞察は誰でもいただければ幸いです。
例ドキュメント:
{
_id: "abc",
propertyId: "7sHGCHT4ns6z9j6BC",
clientId: "xyz"
name: "16.000.001",
serviceType: {
_id: "asdf",
name: "HVAC"
},
manager: {
_id: "dfgh",
name: "Patrick Lewis",
}
}
期待される結果は文書のみ、次のキーのwhere
propertyId
=
7sHGCHT4ns6z9j6BC
AND
1少なくとも一つを見つけることです:name, serviceType.name, or manager.name
、入力された文字列と一致し、この場合には、それはHVAC
だとあれば正規表現フィールドのどれも一致しない場合、何も返しません。
更新 問題はMongoDBを使用していたため、再起動後すべてが機能しました。スクリプト次
より良い解決策のためのサンプル文書を投稿してください。 – Saleem
@Saleem私は、より多くの洞察と詳細で質問を更新しました。 –