在这里,我有两个字段的对象,一个是嵌入的,另一个是mongoDB集合中的DbRef。
假设对象具有名为 product 的嵌入字段和名为 company 的 DbRef 字段。
如果我想在产品对象中搜索具有 id 值"ABC">的对象。 那么用于搜索的条件是:
Criteria criteria = Criteria.where("product.id")
.is("ABC");
现在,如果我想搜索同时product.id为"ABC"和company.name为"XYZ"的对象,我的标准是什么。
由于公司是 DbRef 字段,查询会有什么不同吗?
MongoDB 节点不会自动取消引用 DbRef,您需要:
- 找到所有具有匹配
product.id
的文档,然后使用然后使用像 Mongoosepopulate
这样的客户端函数来填写引用的数据,并匹配客户端的company.name
- 将聚合与$lookup显式填充服务器端的引用字段,然后$match
company.name
使用多个集合的查询需要使用聚合管道。