在MongoDB中构建搜索查询时嵌入字段和dbRef字段之间的差异



在这里,我有两个字段的对象,一个是嵌入的,另一个是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显式填充服务器端的引用字段,然后$matchcompany.name

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

相关内容

  • 没有找到相关文章

最新更新