How to lookup data from 2 collections in MongoDB using python

5.3k views Asked by At

I need read 2 collections data from MongoDB in Python, is there any way to join data in python?

2

There are 2 answers

0
mrberner On

Let's say that we have two collections(tables):

  1. buy_orders
  2. sell_orders

Those tables have the same field 'id_transaction' , and we want to join those tables on this field:

import pymongo

my_client = pymongo.MongoClient('mongodb://localhost:27017/')
my_db = my_client['Orders']
my_collection = my_db['buy_orders']
result = my_collection.aggregate([{
       '$lookup' : {'from': 'sell_orders','localField': 'id_transaction','foreignField': 'id_transaction','as': 'results' }
}])

To print results:

for item in result:
    print(item)

For more references: MongoDB Docs and PyMongo Docs

0
Boston Kenne On

Have a look here

from bson.objectid import ObjectId

#the custom_id for reference
custom_id = ObjectId()

#creating user with the role admin
db.users.insert_one({"name": "Boston", "role_id": custom_id})

#Creating role with the custom id
db.roles.insert_one({"_id": custom_id, "name": "Admin")}

#lookup usage
db.users.aggregate([
                {
                    "$lookup":
                    {
                        "from": "roles",
                        "localField": "role_id",
                        "foreignField": "_id",
                        "as": "roles"
                    }
                }
            ])