2016-04-20 14 views
1

die Künstlersammlung besteht aus dem Detail des Künstlers und der Kunstsammlung bestehen aus dem Detail der Kunst von dem jeweiligen Künstler. Ich möchte beide zusammenführen. Ich bin neu in MongoDB, in SQL Ich weiß, wie die Operation ausgeführt werden, aber es ist schwierig mit MongoMerge Daten von zwei Sammlungen in Mongodb

Künstler Sammlung

{ 
    "_id" : ObjectId("571113f39542ab860bce85d7"), 
    "name" : "ajay", 
    "email" : "[email protected]", 
    "password" : "d6124b9d34be470dd0387dff9170c825cf8934ed", 
    "country" : "in", 
    "address" : "mysore", 
    "date_of_birth" : { 
     "year" : "1992:05:03" 
    }, 
    "type" : "artist" 
} 

Art Collection

{ 
    "_id" : ObjectId("57161d2307e2432a49082903"), 
    "type" : null, 
    "originalname" : null, 
    "user_id" : "571113f39542ab860bce85d7", 
    "fullPath" : "/code/wd/artifu/backend/uploads/568eec81d2051abe2996f7139d46d143.png", 
    "created" : ISODate("2016-04-19T11:57:23.731Z"), 
    "data" : { 
     "title" : "image", 
     "description" : "description", 
     "tags" : "forest" 
    } 
} 
finden
+0

Mongo nicht Joins nicht unterstützt, wird dBref statt – Koitoer

+0

Sie können auch die 'populate' Funktion überprüfen wollen nutzen könnten von [' Mongoose'] (http://mongoosejs.com/docs/ populate.html), wenn Sie es benutzen dürfen. –

+0

Ich benutze Mongoskin –

Antwort

1

nach dem Durchlaufen der Dokumente konnte ich es zusammenführen, danke für die wh o kommentiert :)

function new(req, res, next) { 
    db.arts.findOne({ 
     _id: mongoskin.helper.toObjectID(req.params._id) 
    }, function(err, art) { 
     if (err) return next(err); 
     if (!art) { 
      return res.status(404).send({ 
       status: '404 file not found' 
      }); 
     } 
     db.users.findOne({ 
      _id: mongoskin.helper.toObjectID(art.user_id) 
     }, function(err, user) { 
      if (err) return next(err); 
      if (!user) { 
       return res.status(404).send({ 
        status: '404 User not found' 
       }); 
      } 
      return res.send({ 
       user,art 
      }); 

     }) 
    }); 
}