MongoDB: map relationships in collection

mongodb, monk, relationship

Solution

Mongo is non relational so no joins

2 queries:

var recent = db.recent.findOne({"id" : "123"})
db.member.find( {"id" : {$in : recent.member_id }});

Then it is upto you to use ORM like http://blog.modulus.io/getting-started-with-mongoose

ForEach based approach talks about loading client Side as mentioned by you already:

    db.recent.find().forEach(
        function (rece) {
            rece.member = db.member.find( {"id" : {$in : rece.member_id }});
            db.recentMembers.insert(rece);
        }
    );

db.recentMembers.find().pretty()

Problem

I don't know how descriptive the title is, so feel free to modify it for better understanding. I'm very new to MongoDB and so far things have gone well. However I ran into a very basic problem where I need to join / map documents from other collection to documents in other collection. In brief I have following structure: Collection "member": ``` { "_id": "abc", "name": "Mr. Abc" } { "_id": "def", "name": "Mrs. Def" } ``` Collection "recent": ``` [{ "_id": "123", "member_id": "abc", "action": "joined" }, "_id": "456", "member_id": "def", "action": "left" }] ``` Now I want to iterate through "recent" and map all the members into it as a object "member" into document. I'm using monk (https://github.com/LearnBoost/monk) as an API for MongoDB, but couldn't find any solution. So far I tried to iterate with .forEach() and to add every result from "member" to "recent". However since the queries are asynchronous, I can't make it work with my callback which returns all the documents. I read something about cursors and so on, but couldn't find any feasible solution. Therefore I'm asking from you.

Original source

Related problems