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

Difference between embedded and dbRef fields while building search query in MongoDB

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

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

如果我想在产品对象中搜索id值为"ABC"的对象。 那么将用于搜索的条件是:

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

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

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

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

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

  • 找到匹配product.id的所有文档,然后使用然后使用像mongoose的populate这样的客户端函数来填充引用的数据,并匹配上的company.name客户端
  • 使用 $lookup 聚合来显式填充服务器端的引用字段,然后 $match company.name