-1

这里我的对象有两个字段,一个是嵌入的,另一个是 mongoDB 集合中的 DbRef。

假设对象具有名为 product 的嵌入字段和名为 company 的 DbRef 字段。

如果我想在产品对象中搜索 id值为“ABC”的对象。那么用于搜索的标准是:

Criteria criteria = Criteria.where("product.id")
    .is("ABC");

现在,如果我想搜索同时具有product.id为“ABC”以及company.name为“XYZ”的对象,我的标准是什么。

由于公司是 DbRef 字段,查询会有什么不同吗?

4

2 回答 2

1

MongoDB 节点不会自动取消引用 DbRef,您需要:

  • 找到所有匹配的文档product.id,然后使用然后使用像猫鼬这样的客户端函数populate来填写引用的数据,并company.name在客户端匹配
  • 使用带有$lookup的聚合来显式填充服务器端的引用字段,然后 $matchcompany.name
于 2020-06-20T20:56:59.360 回答
0

使用多个集合的查询需要使用聚合管道。

于 2020-06-20T15:03:03.143 回答