2016-03-21 6 views
0

Я работаю над применением стека MEAN. В моем проекте есть форма, в которой есть семь полей. Из 7 полей, 3 из коллекции dept и 4 из коллекции пользователей. Когда мы ищем только с одним полем, тогда проблем нет. Но когда мы отправляем два текстовых поля из разных коллекций каждый, они показывают неправильные данные. Как известно, в mongo db нет операции соединения. Как мы можем присоединиться к двум коллекциям? Пожалуйста, помогите мне !!! Предположим, что это семь полей в моей форме. неПоиск из двух коллекций mongo

Единица Название: Продавец Имя: Код: Клиент №: адрес: статус taxid:

В приведенном выше списке, имя блока, продавец имя и код приходят из офиса collection.Client нет, адрес, статус, taxid поступают из сбора данных. теперь я пытаюсь найти название элемента со статусом «active». Итак, теперь я пытаюсь выполнить поиск из офисной коллекции, а затем использовать id в наборе данных.

Просто, пожалуйста, расскажите, как мы можем выполнить присоединение к mongodb. Как мы можем выполнить совместную операцию в mongodb.

if (string.$and.length > 0) { 
       office.find(string).exec(function(err, office) { 
        if (err) { 
         return next(err); 
        } else { 

         for (var i = 0; i < office.length; i++) { 
          ids.push(office[i]._id); 

         } 
         string.$and.push({ 
          $or: [{ 
           data_id: { 
            "$in": ids 
           } 
          } 
          }] 
         }); 
         if (string1.$and.length > 0) { 
          data.find(string).populate('data_id').exec(function(err, data) { 
           if (err) { 
            return next(err); 
           } else { 

            res.json(data); 
           } 
          }); 
         } else { 
                 data.find({ 
           $or: [{ 
            data_id: { 
             "$in": ids 
            } 
           }, { 
            data_nu: { 
             "$in": data_nu 
            } 
           }] 
          }).populate('data_id').exec(function(err, data) { 
           if (err) { 
            return next(err); 
           } else { 

            res.json(data_id); 
           } 
          }); 
         } 
        } 
       }); 
      } else { 
       data.find(string).exec(function(err, data) { 
        if (err) { 
         console.log(err); 
         return next(err); 
        } else { 

         for (var i = 0; i < data.length; i++) { 
          ids.push(data[i].data_id); 
          data_nu.push(data[i].data_nu); 
         } 

         if (string.$and.length > 0) { 
          office.find({ 
           $and: [{ 
            $or: [{ 
             id: { 
              "$in": ids 
             } 
            }, { 
             data_nu: { 
              "$in": data_nu 
             } 
            }] 
           }, string] 
          }).populate('dataId').exec(function(err, datad) { 
           if (err) { 
            return next(err); 
           } else { 

            res.json(datad); 
           } 
          }); 
         } else { 
          datad.find({ 
           $or: [{ 
            id: { 
             "$in": ids 
            } 
           }, { 
            data_nu: { 
             "$in": data_nu 
            } 
           }] 
          }).populate('dataId').exec(function(err, datad) { 
           if (err) { 
            return next(err); 
           } else { 

            res.json(datad); 
           } 
          }); 
         } 
        } 
       }); 
      } 
+0

Пожалуйста, добавьте код, который поможет нам помочь. И уточните, что вы хотели бы достичь с помощью некоторого примера. –

ответ

0

mongoDB предпочитает, чтобы вся информация об одном предмете была в одной коллекции. Как вы сказали, нет никакого участия в mongoDB, Пытаясь ПРИСОЕДИНИТЬСЯ в MongoDB, победит цель использования MongoDB. Вы можете использовать DBref и написать свой код (или библиотеку) на уровне приложения, чтобы он автоматически извлекал эти ссылки для вас.

Или вы можете изменить схему и использовать embedded documents.

Ваш последний выбор - оставить вещи точно так, как они есть сейчас, и выполнить два запроса.

Смежные вопросы