1.
The Query
interface allows for certain
filter criteria (based on fields), sorting, an offset, and limiting of the
number of results. The query implementation also implements the the QueryResults
interface which allows access to the data from the query.
2.
The generic .filter(criteria, value)
syntax
is supported. The criteria is a composite of the field name and the operator
("field >", or "field in"). All criteria are implicitly
combined with a logical "and".
Query q = ds.createQuery(MyEntity.class).filter("foo >", 12);
Query q = ds.createQuery(MyEntity.class).filter("foo >", 12).filter("foo <", 30);
3.
The operators used in filter(...) match the
MongoDB query operators very closely:
operator
|
mongo op
|
=
|
$eq
|
!=, <>
|
$ne
|
>,<,>=,<=
|
$gt,$lt,$gte,$lte
|
in
|
$in
|
nin
|
$nin
|
elem
|
$elemMatch
|
exists
|
$exists
|
all
|
$all
|
size
|
$size
|
4.
The fluent interface provides a more readable
(like in the english language sense) form. It works by starting with field(name):
Query q = ds.createQuery(MyEntity.class).field("foo").equal(1);
q.field("bar").greaterThan(12);
q.field("bar").lessThan(40);
method
|
mongo op
|
equal, notEqual
|
$eq, $ne
|
hasThisOne
|
$eq
|
greaterThan, greaterThanOrEq, lessThan, lessThanOrEq
|
$gt,$lt,$gte,$lte
|
hasAnyOf
|
$in
|
hasNoneOf
|
$nin
|
hasThisElement
|
$elemMatch
|
exists, doesNotExist
|
$exists
|
hasAllOf
|
$all
|
sizeEq
|
$size
|
5.
Using the fluent query interface you can also
do "or" queries:
Query<Person> q = ds.createQuery(Person.class);
q.or(
q.criteria("firstName").equal("scott"),
q.criteria("lastName").equal("scott")
);
Note, you should use criteria instead of field
as one of the or paramters.
6.
You can sort by a field, or multiple fields:
... // desc order
Query q = ds.createQuery(MyEntity.class).filter(foo >", 12).order("-dateAdded");
... // asc dateAdded, desc foo
Query q = ds.createQuery(MyEntity.class).filter("foo >", 12).order("dateAdded, -foo");
7.
You can also limit for the number of elements:
Query q = ds.createQuery(MyEntity.class).filter("foo >", 12).limit(100);
8.
You can also ask the server to skip over a
number of elements on the server by specifying an offset value for the query.
This will less efficient than a range filter using some field:
Query q = ds.createQuery(MyEntity.class).filter("foo >", 12).offset(1000);
9.
MongoDB also supports only returning certain
fields. The field name argument (the last arg) can be a list of strings or a
string array:
MyEntity e = ds.createQuery(MyEntity.class).retrievedFields(true, "foo", "bar").get();
val = e.getFoo(); // fields returned
vak = e.getBar(); // fields returned
10.
To return your data just call one of the QueryResults
methods. None of these methods affect the Query
. They will leave the Query
alone so you can continue to use it to retrieve new results by calling these methods
again:
method
|
does
|
get()
|
returns the first Entity -- using limit(1)
|
asList()
|
return all items in a List -- could be costly with large result
sets
|
fetch()
|
explicit method to get Iterable instance
|
asKeyList()
|
return all items in a List of their Key<T> -- This only
retrieves the id field from the server.
|
fetchEmptyEntities()
|
Just like a fetch() but only retrieves, and fills in the id field.
|
Query q = ds.createQuery(MyEntity.class).filter("foo >", 12);
//single entity
MyEntity e = q.get();
e = q.sort("foo").get();
//for
for (MyEntity e : q)
print(e);
//list
List<MyEntity> entities = q.asList();
11.
Validation is done on the field names, and data
types used. If a field name is not found on the java class specified in the
query then an exception is thrown. If the field name is in "dot"
notation then each part of the expression is checked against your java object
graph (with the exception of a map, where the key name is skipped). Problems in
the data type (comparing the field type and parameter type) are logged as
warnings since it is possible that the server can coerce the values, or that
you meant to send something which didn't seem to make sense; The server uses
the byte representation of the parameter so some values can match even if the
data types are different (numbers for example).
12.
Validation can be disabled by calling disableValidation()
as the beginning of the query definition, or anywhere within your query.
分享到:
相关推荐
在SAP系统中,"QUERY报表制作和传输"是一个关键任务,主要涉及到SAP Query工具的使用。SAP Query是SAP R/3系统中的一种报告工具,它允许用户无编程地创建自定义报告,特别适合于那些需要定期生成但不需要复杂逻辑...
SAP ABAP Query 是 SAP 系统中一种用于创建自定义报表的强大工具,尤其适合那些对 SQL 不太熟悉或者没有数据库直接访问权限的用户。它提供了丰富的功能,使得开发人员可以构建复杂的数据查询,而无需编写大量的 ABAP...
SAP Query 报表是SAP系统中一种用于生成自定义报表的重要工具,它允许用户根据特定需求定制数据报告,从而提高数据分析和决策制定的效率。本操作手册旨在为SAP业务顾问和运维顾问提供关于如何分配和配置SAP Query...
"SAP Query 传输与实现" 在 SAP 系统中,Query 是一种强大且灵活的报表工具,能够满足各种业务需求。但是,在将 Query 上传到生产机后,如何实现上传和使用 Query,是一个需要注意的问题。本文将详细介绍 Query 的...
**Power Query 中文 2020最新文档** Power Query是一种强大的数据预处理工具,由微软开发,旨在简化数据获取、清洗和转换的过程。它在Excel和Power BI Desktop中都有集成,极大地提升了用户处理和分析数据的能力。...
"PL/SQL ActiveQueryBuilder" 是一个强大的数据库查询构建器,设计用于替代传统的SQL查询构建工具。这个工具的主要目的是提供一种直观、用户友好的界面,帮助开发者和数据库管理员更轻松地构建复杂的SQL查询,同时...
Power Query是Excel中的一款强大数据查询和准备工具,它允许用户轻松地从各种数据源导入、清洗和转换数据。在Excel环境中,Power Query通常被称为“获取和转换”或M语言(用于公式和脚本的查询语言)。这款插件极大...
在SAP系统中,SAP Query是一个强大的工具,允许用户自定义报告以满足特定的数据查询需求。它提供了灵活的报表设计功能,使非编程背景的用户也能创建和修改查询。在某些情况下,我们可能希望在查询结果上添加交互性,...
【Power Query 入门手册】是一本针对Excel报表自动化工具PowerQuery(简称PQ)的初学者指南。Power Query是Microsoft Excel中一个强大的数据预处理工具,它允许用户轻松地清洗、转换和整合数据,为数据分析工作提供...
**Elasticsearch插件Delete-by-Query详解** 在Elasticsearch中,删除操作通常是针对单个文档进行的,但有时我们需要删除满足特定条件的一大批文档。这时,`Delete-by-Query`插件就显得尤为重要。它允许我们通过一个...
Oracle EXP Query参数转义符的各个操作系统通用解决方法 Oracle EXP_Query参数转义符是指在使用Oracle EXP工具导出数据时,query参数中的特殊字符需要进行转义,以避免引发错误。在不同的操作系统平台上,EXP_...
这里,`$request->query`是一个`QueryBag`对象,它提供了`get()`和`getInt()`等方法来获取query参数。`get()`方法默认返回字符串,而`getInt()`则会尝试将值转换为整数,如果没有提供键,或者键不存在,它会返回指定...
Altium Designer是电子设计自动化软件,广泛应用于电路设计领域,其中的Query Language是其强大的数据过滤和编辑系统,可让用户通过特定的查询语句获取软件中的一组特定对象。本教材对Altium Designer中使用的Query ...
CriteriaQuery<YourEntityName> criteriaQuery = builder.createQuery(YourEntityName.class); Root<YourEntityName> root = criteriaQuery.from(YourEntityName.class); TypedQuery<YourEntityName> typedQuery ...
MySQL Query Browser是一款强大的数据库管理工具,专为MySQL数据库设计,提供了直观的图形用户界面,使得数据库操作变得简单易行。本教程将详细讲解其主要功能和使用方法。 1. **安装与启动** - 安装MySQL Query ...
MyBatis-Plus的QueryWrapper是其强大的查询构造器,为开发者提供了便利的API来构建复杂的SQL查询。在Spring Boot项目中,MyBatis-Plus作为一个扩展MyBatis的轻量级框架,大大简化了数据库操作。下面我们将深入探讨...
### SAP BW 更改 Query 查询变量属性 #### 一、引言 在SAP BW (Business Warehouse)环境中,经常需要对已经定义并使用的BEx (Business Explorer)查询中的变量进行修改,尤其是在需要更改变量的“Processing by”...
《Excel PowerQuery M函数 视频教程配套笔记及M函数大全》是一份全面介绍Excel PowerQuery中M函数的宝贵资源,适用于数据分析师、业务人员以及任何希望通过Excel进行高效数据处理的用户。本教程旨在帮助学习者掌握...
《PowerQuery:提升数据处理效率的强大工具》 在当今数据密集型的社会中,高效的数据处理能力成为了企业乃至个人提升竞争力的关键。PowerQuery,这个由Microsoft开发的强大的数据查询和清洗工具,为Excel用户提供了...
"Advanced Query Tools" 是一款专为数据库查询优化设计的高级工具,主要面向IT专业人士和数据库管理员。这款软件提供了丰富的功能,旨在帮助用户更高效、精确地执行复杂的SQL查询,提高数据库管理和开发的效率。 在...