ネストされたオブジェクトを持つコレクションをクエリしています。ドメイン モデルは次のようになります。
@Document(collection="a")
public class A {
protected Map<String, B> fields;
protected String uuid;
protected Date updatedTs;
//Getters and setters and other fields omitted
}
public class B{
protected String c;
protected String d;
}
次のような基準を使用してクエリを実行しています。
{ "uuid" : "9DA291A4-1BAB-4B9C-844D-681C3F1ABF6E"}
私が使用して作成する
Criteria.where("uuid").is(uuid);
次のように出力できるため、基準オブジェクトには他のものが含まれていないことがわかります。
log.debug("Criteria: " + SerializationUtils.serializeToJsonSafely(c.getCriteriaObject()));
パッケージ org.springframework.data.mongodb.core のデバッグ ロギングを有効にすると、実際にサーバーに送信されるクエリは次のようになります。
{ "uuid" : "9DA291A4-1BAB-4B9C-844D-681C3F1ABF6E"} fields: null
編集:私のドキュメントには「フィールド」と呼ばれるフィールドが含まれており、コードまたはmongoTemplate/spring-dataで実際にフィールドを検索しているようです:null。fields: null は実際には返されるフィールド名のセットを参照しているため、MongoTemplate のログ行は私を混乱させました。
では、プロパティ「フィールド」が null のドキュメントのみを返す spring-data なしで、その uuid に一致するドキュメントを検索するにはどうすればよいでしょうか?
その間、ドキュメント構造を変更できないため、これを回避する方法をまだ調査しています...