FitTech
@FitTech

Как сделать связь в Mongo?

Здравствуйте! Использую MongoDB с Symfony и нужна подсказка, есть две коллекции:
Collection1: _id, total, card_id, images
Collection2: _id, data, price, card_id

Как в php в документе описать связь по card_id между двумя коллекциями, чтобы при получении объекта из collection1 была связь на collection2 через card_id?

Кто знает, подскажите, пожалуйста.
  • Вопрос задан
  • 172 просмотра
Решения вопроса 1
hzzzzl
@hzzzzl
именно так не делал, чтобы обращаться из одной коллекции в другую не по _id, но судя по всему так
https://stackoverflow.com/questions/19287142/popul...

Coll1.virtual('card_id', {
  ref: 'Coll2',
  localField: 'card_id',
  foreignField: 'card_id',
  justOne: true // for many-to-1 relationships
});

Coll1.find({...})
    // if you use select() be sure to include the foreign key field !
    .select({ card_id }) 
    // use the 'virtual population' name
    .populate('card_id')
    .exec(function(err, books) {...})


это для прокладки mongoDB для node.js, но если это возможно там, то возможно и напрямик через монго, я просто не знаю как

если оба документа ссылаются на коллекцию Card по _id (а скорее всего так и сделало, эти айдишники карточки же тоже на что-то ссылаются?), то довольно просто в коллекциях прописать отсылку на _id карточки и при запросе получать json с карточкой
https://docs.mongodb.com/manual/reference/database...
https://mongoosejs.com/docs/populate.html

но с PHP не могу помочь, без понятия как там устроено

--

еще посмотри это, вероятно то что надо
https://docs.mongodb.com/manual/reference/operator...

Collection1.aggregate([{
   $lookup:
     {
       from: "Collection2",
       localField: "card_id",
       foreignField: "card_id",
       as: "from_coll_2"
     }
}])


за синтаксис из головы не уверен, но можно попробовать
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы