そのため、指定されたタグ (つまり、「a」、「b」、または「c」) のいずれかを持つドキュメントを検索しようとしています。
MongoDB クエリは次のとおりです。
db.my_collection.find({ "tags" : { "$elemMatch" : { "$in" : ["a", "b", "c"] } } })
これは問題なく機能します (tags は、ドキュメントのタグの配列であるドキュメント フィールドです)。問題は、SpringData Query および Criteria オブジェクトを使用してこのクエリを作成しようとしたときです。
List<String> tags = Arrays.asList("a", "b", "c");
Criteria inTags = new Criteria().in(tags);
Criteria where = Criteria.where("tags").elemMatch(inTags);
Query query = new Query(where);
System.out.println(query);
これの出力は次のとおりです。
Query: { "tags" : { "$elemMatch" : { }}}, Fields: null, Sort: null
もちろん、これは私にとってはうまくいきません。これをSpringDataクエリ/基準で機能させる方法を知っている人はいますか? 私は醜い回避策やMongoDB Javaドライバーを直接使用することに興味はありません-私はそれを行うことができます. SpringData クラスでこれを正しく行う方法があるかどうか知りたいです。