Разница между встроенными полями и полями dbRef при построении поискового запроса в MongoDB - PullRequest
0 голосов
/ 20 июня 2020

Здесь у меня есть объект, имеющий два поля, одно встроено, а другое - DbRef в коллекции mongoDB.

Предположим, что у объекта есть встроенное поле с именем product и поле DbRef с именем company.

Если я хочу найти объект, имеющий значение "AB C" идентификатора в объекте продукта. Тогда критерии, которые будут использоваться для поиска:

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

Теперь, если я хочу найти объект, имеющий как product.id как «AB C», так и имеющий company.name как «XYZ», каковы будут мои критерии.

Будет ли разница в запросе из-за того, что company является полем DbRef?

Ответы [ 2 ]

1 голос
/ 20 июня 2020

DbRef не разыменовывается автоматически узлом MongoDB, вам нужно либо:

  • найти все документы с совпадающими product.id, затем использовать, а затем использовать клиентскую функцию, например mon goose populate для заполнения ссылочных данных и соответствия company.name на стороне клиента
  • использовать агрегат с $ lookup , чтобы явно заполнить ссылочное поле на на стороне сервера, а затем $ соответствует company.name
0 голосов
/ 20 июня 2020

Запросы, которые используют более одной коллекции, требуют использования конвейера агрегирования.

...