我尝试创建一个检索标签=“red”OR tag =“blue”
的实体的查询我不能这样做:
colors = ["red", "yellow"]
query.where("tag", "=", colors[0]).where("tag", "=", colors[1])
有没有办法用灵活的“OR”过滤器制作它?
我甚至考虑像
这样的字符串查询query.query_string = "SELECT * FROM Item WHERE tag = @1 OR tag = @2"
但是documentation说:
数据存储区尚不支持!=和OR运算符 GQL
答案 0 :(得分:0)
我不确定ruby client使用footer{
padding: 20px;
color: #ffffff;
background-color: #333;
text-align: center;
width: 100%;
position: absolute;
left: 0;
bottom: 0;
overflow: hidden;
}
或GRPC API
,但每个API都不支持REST API
操作。
所以我认为OR
操作是不可能的。
答案 1 :(得分:0)
!=和OR运算符。您可以通过查询每个OR语句的Cloud Datastore并连接结果来模拟OR运算符。与以下代码类似,但不完全是因为此代码可以包含重复项:
datastore = Google::Cloud::Datastore.new
red_query = Google::Cloud::Datastore::Query.new
red_query.kind("messages").where("tags", "=", "red")
items = datastore.run red_query
yellow_query = Google::Cloud::Datastore::Query.new
yellow_query.kind("messages").where("tags", "=", "yellow")
items.concat datastore.run(yellow_query)
items.each do |item|
puts "Tags: #{item['tags']}"
end
代码:
query.where("tag", "=", colors[0]).where("tag", "=", colors[1])
可能被误解为OR操作,但它是一个AND操作。 Source。
正如nshmura所指出的,API并不支持AND运算符以外的运算符。