原创

データストア複合フィルタ OR クエリ

温馨提示:
本文最后更新于 2024年04月12日,已超过 48 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

次のフィルターを使用する誰の書き込みを変更しようとしています。

CompositeFilter.and(
            eq("firstName", firstName),
            ge("lastName" lastName),
            lt("lastName", lastName.concat("\uf8ff")))

投稿は通常に機能しますが、DB 内の一部のユーザーには firstName と lastName フィールドはなく、基本的に同じ情報 (タグと姓) を含む他のフィールドがあります。

データが欠落しているユーザーを取得する方法としてこれを思いつきました。

CompositeFilter.or(
        CompositeFilter.and(
            eq("firstName", firstName),
            ge("lastName", lastName),
            lt("lastName", lastName.concat("\uf8ff"))),
        CompositeFilter.and(
             eq("tag", firstName),
             ge("surname", lastName),
             lt("surname", lastName.concat("\uf8ff")))
)

ここで、書き込みがデータストアからエンティティを取得しないことに驚きました。 CompositeFilters のこのネストはサポートされていますか?

ここで、GQL を使用して GCP で書き込みを実行しようとすると、次の書き込みが結果を取得することがわかります。

SELECT * FROM  `db` WHERE  (tag="Carlos" AND surname>="Palma" AND surname<"Palma" )

しかし、結果を取得しない別の書き込みと OR を実行すると、結果が得られません。

SELECT * FROM  `db` WHERE  (tag="Carlos" AND surname>="Palma" AND surname<"Palma" ) OR 
(firstName="Carlos" AND lastName>="Palma" AND lastName<"Palma" )

私にとって、これはかなり奇妙です。 最初の書き込みでは結果が得られたのに、OR を実行すると結果が得られないのはなぜですか?それとも結果を追加するものではないですか?

正文到此结束
热门推荐
本文目录