对象浏览:搜、筛、看、比
开箱即用的四种问法;点选就是在改写对象集;对比视图与 AIDC 今天的范围。

本课目标
读完这一课,你将能够
- 说出对象浏览器回答的四种问题:搜、筛、看分布、比
- 把一串点选翻译成对象集,用
where、pivotTo、aggregate写出来 - 说清 AIDC 的对象浏览器今天有什么、还没有什么
四种问法
上一门课讲的是怎样让逻辑可测、可发布。这一门讲另一头:人和应用怎样把 Semantic 里的数据用起来。第一站是对象浏览器(Object Explorer)。它开箱即用,不用搭界面,也不用写代码,适合不太懂技术的同事。
搜
在属性里找关键词。默认按整词或整句匹配,不匹配前缀和后缀;要前缀匹配,得打开「以…开头」。
筛
给属性加条件,用「且」「或」叠加、嵌套;也可以按关系筛,例如「有检验记录的工单」。
看分布
结果按某个属性分组,看每组有多少;点一组,就把它加成筛选条件。
比
把两个筛出来的对象集并排放,看它们哪里不一样。
搜索词可以加三个修饰:「不含」把条件取反,「以…开头」做前缀匹配,「精确」把整句连空格一起匹配。按关系筛有三种:有没有这条关系、关联对象的某个属性满足条件、连到某几个具体的对象。示例工厂里,「有检验记录、却没有缺陷的工单」就是两次关系筛选。
有一条规则容易漏掉:被设为隐藏的对象类型和属性,不会出现在搜索结果里,也不会出现在对象浏览器的任何地方。
把点选翻译成对象集
对象浏览器里的每一次点选,都是在改写一个对象集(Object Set)。看懂这层对应,就能把同一个问题交给应用、脚本或智能体去做。
| 对象浏览器里 | 对象集里 | |
|---|---|---|
| 选类型 | 点开「工单」 | client.objects("workOrder") |
| 加条件 | 状态 = 进行中 | .where({ status: "running" }) |
| 沿关系走 | 跳到这些工单的检验 | .pivotTo("inspections") |
| 看分布 | 按产线分组计数 | .aggregate({ $select, $groupBy }) |
| 两组取差别 | 对比两个对象集 | union、intersect、subtract |
示例工厂的计划员想知道:这一周到期、还没做完的工单,每条产线各有几张。在浏览器里是三步点选,写成代码是一个对象集加一次聚合:
const client = semantic.ontology();
const open = client.objects("workOrder").where({
status: { $in: ["planned", "released", "running", "paused"] },
dueAt: { $lt: "2026-10-05T00:00:00Z" },
});
const byLine = await open.aggregate({ $select: { $count: "desc" }, $groupBy: { lineCode: "exact" } });
条件最多嵌套三层;按 exact 分组时,缺省最多返回 10,000 组。同一件事在命令行里是:
aidc semantic aggregate workOrder --where '{"status":"running"}' --select '{"$count":"desc"}' --group-by '{"lineCode":"exact"}'
比:两个对象集并排
对比视图把两个对象集并排放:图表里每组各画一份,筛选、表格、批量操作、导出照常可用。被比的另一组,可以是保存过的探索、同类型的全部对象,或者当场定义的新对象集。
保存和分享对比时要记住一条:分享的是视图,不是数据。看的人仍然需要对底层对象有权限。
哪条产线更差?把两张表导出到表格软件,手工对。
两个对象集各做一次聚合,并排读:一号线与二号线的良品数、废品数放在一起看。
const line = (code) => client.objects("workOrder").where({ lineCode: code, status: "running" });
const [l1, l2] = await Promise.all(["L1", "L2"].map((c) =>
line(c).aggregate({ $select: { "goodQty:sum": "unordered", "scrapQty:sum": "unordered" } })));
// 各自是 { goodQty: { sum }, scrapQty: { sum } },并排放就是对比
要点
- 对象浏览器回答四种问题:搜、筛、看分布、比;开箱即用,不用搭界面。
- 每一次点选都在改写一个对象集,对应
where、pivotTo、aggregate和并、交、差。 - 条件最多嵌套三层;
exact分组缺省最多 10,000 组。 - 分享对比视图不分享数据,看的人仍需要对底层对象有权限。
- AIDC 今天有搜索、筛选、排序、分组计数;对比视图与保存的探索目前还没有。
练一练
把点选写成对象集
在你有权限的组织里做;只读操作,不会改任何数据。
在对象浏览器里选一个类型,加两个筛选、再按一个属性分组;然后把这串点选写成 where 加 aggregate。
用 aidc semantic aggregate 跑出同样的分组计数,看两边的数字是否一致。
写出「这个月到期的采购订单,按供应商分组」的对象集:类型、条件、分组字段各是什么?
小测
选一个答案,马上看解析。
Q1在浏览器里筛出「一号线的工单」,再按「状态」看分布。写成代码最接近哪一个?
筛选对应 where,看分布对应按属性分组的聚合,都在 Semantic 里算,不用取回全部对象。
Q2你把一个对比视图分享给同事,他能看到什么?
分享的是视图,不是数据。权限要分别管。
Q3AIDC 今天要并排看一号线与二号线的废品数,怎么做?
对比视图目前还没有,但对象集与聚合都有,并排读就是对比。