Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >JDOQL (Appengine) -查询以列表作为参数的所有/一个项?

JDOQL (Appengine) -查询以列表作为参数的所有/一个项?
EN

Stack Overflow用户
提问于 2011-02-21 10:09:19
回答 1查看 521关注 0票数 1

我试图创建一个查询,以便将给定列表(参数)的所有项包含在表的列中(该列也是一个列表)。我还需要一个查询,以便在表的列中至少包含一个给定列表(参数)的一个项。例如:

JDO:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Table: User
| ID | Name | Interests <List of Strings> |

查询:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
List <String> gifts; // Item to query with

  1. 我怎样才能查询所有兴趣与所有礼物相匹配的用户?也就是说,所有的礼物都应该是兴趣的子集。

  1. ,我怎么能询问所有的用户,他们的兴趣是否与某些(至少一种)礼物相匹配?也就是说,至少有一个礼物是interests.
  2. How的一个子集,我可以查询所有兴趣与礼物匹配的用户吗?也就是说,所有的兴趣都应该是礼物的子集。

  1. ,我如何能够查询所有用户的一些兴趣(至少一个)与礼物相匹配?也就是说,至少有一个兴趣是礼物的一个子集。--

这些问题有可能吗?如果是,那怎么做?我可以使用.contains()关键字来执行这些查询吗?如果是,那怎么做?有谁能分享一些例子吗?任何帮助都将不胜感激。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-21 16:07:05

为了了解这类查询是如何工作的(或不工作),了解数据存储实体是如何索引的非常重要。当插入具有list属性的实体时,数据存储将每个列表条目分解为单独的索引行。例如,以下实体:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Entity(User):
  id=15
  name="Jim"
  interests=["Drinking", "Banjos"]

将导致自动索引中的下列索引条目:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(User, "id", 15, Key("User", 1))
(User, "name", "Jim", Key("User", 1))
(User, "interests", "Drinking", Key("User", 1))
(User, "interests", "Banjos", Key("User", 1))

如果您还在(名称、兴趣)上定义了一个复合索引,那么其中的条目如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
("Jim", "Drinking", Key("User", 1))
("Jim", "Banjos", Key("User", 1))

这样,我们就可以处理您特定的查询查询,以便:

  1. 这是不可能的,因为每个条目都位于自己的索引行上。您可以通过为每个兴趣子集创建一个带有一个条目的列表来对其进行索引,并对其进行平等查询,但随着兴趣的增加,这种情况会迅速增长,因此,如果您期望用户拥有超过5个兴趣,或者除非您可以对问题施加更多的限制,那么这可能是个坏主意。
  2. 可以使用" IN“筛选器--例如,从用户兴趣所在的”饮酒“、"Banjos"‘中选择*--这将与任何至少具有”饮酒“和"Banjos”兴趣的记录相匹配。请注意,SDK将将其分解为多个等式子查询,因此它相当于执行查询列表中的条目的数量。
  3. --这是1的反义词。同样,它也不太实际,除非您已经将完整(排序)兴趣列表存储为字符串,并且准备对礼物列表的每个子集执行单独的查询。
  4. --如果我没有弄错,这与2相同--您正在寻找这两组之间的任何交集,这是一个对称操作。

对于数字1和3,您可以通过执行一个更粗的筛选器(例如,搜索一两个兴趣项)并过滤内存中的结果来获得精确匹配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5069557

复制
相关文章
Golang语言 - 以任意类型的slices作为输入参数
最近参与的一个业余项目,go-linq,让我了解到Go语言的类型系统并不是为任何类面向 对象编程而设计的。没有泛型,没有类型继承,也没有提供任何对这些特性有用的东西。 但是,提供了一个名为interface{}的类型,你可以向其赋予几乎任意类型的值,不会抛出编译错误,就像.NET的Object或Java的Object: var o interface{} o := 3.14 o := Student{Name: "Ahmet"} 我们假设你需要一个可以接收任意类型slices的函数,如果考虑如下这样实现:
李海彬
2018/03/21
1.8K0
“禁止用 select * 作为查询字段列表”落地指南
《阿里巴巴 Java 开发手册》 MySQL 数据库部分,ORM 映射部分,谈到:
明明如月学长
2021/12/01
1.1K0
“禁止用 select * 作为查询字段列表”落地指南
《阿里巴巴 Java 开发手册》 MySQL 数据库部分,ORM 映射部分,谈到:
明明如月学长
2022/02/15
9590
WordPress 查询参数(WordPress Query Vars)完全列表
WordPress 查询参数分公开(Public)和私用(Private),公开就是可以博客链接加入参数就可以查询数据,而私有只能在代码中通过参数传递 WP_Query class。
Denis
2023/04/13
5340
使用VBA查找并在列表框中显示找到的所有匹配项
有时候,我们想从数据表中搜索指定的内容,但匹配项往往不只一项,而我们想要将匹配项全部显示出来,如下图1所示。
fanjy
2022/04/13
13.3K6
使用VBA查找并在列表框中显示找到的所有匹配项
salesforce开发之 多选选项列表(multipicklist)作为查询条件的记录及思考
首先我们知道 多选选项列表(multipicklist)在数据库里以分号分割的形式存储的。例如:Country__c : 中国;美国;加拿大
zcx
2022/08/01
8350
使用 C# 9 的records作为强类型ID - 路由和查询参数
但是在强类型id真正可用之前,还有一些问题需要解决,比如,ASP.NET Core并不知道如何在路由参数或查询字符串参数中正确的处理它们,在这篇文章中,我将展示如何解决这个问题。
全球技术精选
2021/01/21
1.9K0
使用 C# 9 的records作为强类型ID - 路由和查询参数
python之列表,python列表的所有详细操作
range(start,end,step) start :起始的值 end:到end -1 结束 step:相邻两个数之间相差step个 列表的索引和切片
matinal
2023/10/13
2160
结构体作为函数的参数
> 只要结构体成员是一个具有单个值的数据类型,便可把它作为参数传递给接受该特定类型的函数。 > 使用这种方式为函数传递参数与普通变量作为参数相同,都是以传值的方式传递的。
怪兽
2022/12/31
2.1K0
Access重复项查询
大家好上节介绍了汇总查询,继续介绍选择查询中的重复项查询和不匹配项查询,这两种查询都可以在查询向导中创建,本节主要介绍重复项查询。
无言之月
2020/06/02
1.8K0
Access重复项查询
python两个列表合并为字典,一个作为
两个列表合并为一个字典函数list_dic(list1,list2)可以直接复制拿走
py3study
2020/01/17
2.5K0
在 WPF 中获取一个依赖对象的所有依赖项属性
本来 .NET 中提供了一些专供设计器使用的类型 TypeDescriptor 可以帮助设计器找到一个类型或者组件的所有可以设置的属性,不过我们也可以通过此方法来获取所有可供使用的属性。
walterlv
2023/10/22
4460
Python 函数作为参数传递
#map()的功能是将函数对象依次作用于表的每一个元素,每次作用的结果储存于返回的表re中。 #map通过读入的函数(这里是lambda函数)来操作数据 def test_func_map():     re = map((lambda x: x+3), [1, 2, 3, 4])     print re def testA(a, b, **kargs):     print a+b     print "testA: %s" % kargs #函数作为参数传递 def test_func(func, a, b, **kargs):     func(a, b)     print "test_func: %s" % kargs #函数作为参数传递 def test_func_lambda(func, **kargs):     func()     print "test_func_lambda: %s" % kargs def test_func_getattr():     func = getattr(obj, "testA")     func(1, 2) class TestGetattr():     aa = "2a"     def get_attr(self):         print "test getattr()"     def print_text(self):         print "print text"     def print_string(self):         print "print string" #getattr(obj, "a")的作用和obj.a是一致的,但该方法还有其他的用处,最方便的就是用来实现工厂方法 #根据传入参数不同,调用不同的函数实现几种格式的输出 def output(print_type="text"):     tg = TestGetattr()     output_func = getattr(tg, "print_%s" % print_type)     output_func() if __name__ == "__main__":     #test_func(testA, 1, 2, aa="aa")     #test_func_lambda((lambda: testA(1, 2, bb="bb")), cc="cc")     #test_func_map()     #test_func_getattr()     #getattr方法,传入参数是对象和该对象的函数或者属性的名字,返回对象的函数或者属性实例     obj = TestGetattr()     func = getattr(obj, "get_attr") #getattr()获得对象的属性和方法     func()     print getattr(obj, "aa") #完成对象的反射     print obj.aa     #callable方法,如果传入的参数是可以调用的函数,则返回true,否则返回false。     print callable(getattr(obj, "aa"))     output("string")
py3study
2020/01/09
3K0
6.5 数组作为函数参数
在用数组元素作函数实参时,把实参的值传递给形参,是“值传递”方式。数据传递的方向是从实参传到形参,单向传递
小林C语言
2019/08/19
1.3K0
7.3 数组作为函数参数
2、用数组元素作实参时,向形参变量传递的是数组元素的值,而用数组名作函数实参时,向形参传递的是数组首元素的地址。
小林C语言
2019/07/12
1.6K0
PHP所有函数列表
说所有函数有点夸张,有错误请指正! usleep() unpack() uniqid() time_sleep_until() time_nanosleep() sleep() show_source() strip_whitespace() pack() ignore_user_abort() highlight_string() highlight_file() get_browser() exit() eval() die() defined() define() constant() connect
老高的技术博客
2022/12/27
1.7K0
Python函数的参数列表
形参:形参是在创建过程中声明的参数,如果不给形参传入特定的实参,形参就没有实际的意义
Python学习者
2022/11/23
9140
点击加载更多

相似问题

查询以查找列表中的所有匹配项。

11

以列表作为参数的spring数据查询方法

12

以有效的方式将dict中的所有项作为参数传递

224

使用列表中的项作为参数

22

JDOQL子查询计数问题

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文