Arhn - архитектура программирования

Как искать несколько коллекций в mongoDB

У меня есть 2 коллекции в mongoDB, а именно product и author. Теперь в коллекции product есть объект с именем detail, который содержит title и другие сведения, тогда как таблица author содержит сведения о author. Теперь я пытаюсь выполнить поиск, который находит как title, так и author .. Например: если title соответствует, должно быть указано details этого product, а если author совпадает, то снова должно отображаться details этого product. author_id — это foreign_key в коллекции product, а _id — это первичный ключ в авторской коллекции.

Ниже моя коллекция

Коллекция Product

{
    "_id" : ObjectId("5af2bd44a003533a8abf4e56"),
    "product_type_id" : "5ae834807ae0d9538e45ab45",
    "date_added" : "2018-03-12 12-3-54",
    "status" : 1,
    "detail" : {
        "title" : "The random title",
        "author_id" : "5af2c401a003533a8abf4e57",
        "test_id" : 12345,
        "description" : "I have a mongoDB collection with f rows",
        "mrp" : 200,
        "binding" : "sd",
        "language" : "English",
        "isbn" : NumberLong("9788700631625"),
        "isbn_10" : 747532745,
        "ean" : 897655,
        "pages" : 200
    }
}

Это коллекция author

{
    "_id" : ObjectId("5af2c401a003533a8abf4e57"),
    "name" : "Dan Brown",
    "test_id" : 12345
}

Пока мне приходится искать по коллекциям самостоятельно. Но не вместе

Для author поиска

db.author.aggregate
([{
    "$match":   
            {
              "name":"Dan Brown"
             }
   },
   {
   "$lookup": 
            {
              "from": "product",
              "localField": "test_id",
              "foreignField": "detail.test_id",
              "as": "users"
             }
   }
  ]
 ).pretty();

Доступ к title был осуществлен с использованием обычного метода find() РЕДАКТИРОВАТЬ 1:

Итак, это то, что я пробовал до сих пор. Это правильный подход. Btw, это все еще не работает, хотя

  db.product.aggregate
  (

    [

      {

         "$match":
            { 
                 detail.title : 'The random title'
             }
      },
      {
         "$lookup":
           {
            "from": "author",
            "localField": "test_id",
            "foreignField": "detail.test_id",
            "as": "tb2"
            }
      },
      {
         "$unwind": "$tb2" 
      },

      {
         "$match":
             {
                 "tb2.name": "agent" 
              }
       }
    ]
  );


  • Три ссылки. Первый в основном показывает, вероятно, самую прямую корреляцию, являющуюся поиском по разным полям либо в родительском, либо в дочернем элементе соединения. Два других более подробно объясняют, почему следует отдавать предпочтение шаблону $lookup + $unwind + $match. 10.05.2018
  • спасибо .. думаю, я получил то, что искал ... Thank you очень 10.05.2018

Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..