![Trending Articles on Technical and Non Technical topics](/images/trending_categories.jpeg)
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Perform $lookup to array of object id's in MongoDB?
For this, use $lookup. This performs a left outer join to an unsharded collection in the same database to filter in documents from the “joined” collection for processing.
Let us first create a collection with documents −
> db.demo395.insertOne({Name:"Chris"}); { "acknowledged" : true, "insertedId" : ObjectId("5e5e782317aa3ef9ab8ab207") } > db.demo395.insertOne({Name:"David"}); { "acknowledged" : true, "insertedId" : ObjectId("5e5e782317aa3ef9ab8ab208") }
Display all documents from a collection with the help of find() method −
> db.demo395.find();
This will produce the following output −
{ "_id" : ObjectId("5e5e782317aa3ef9ab8ab207"), "Name" : "Chris" } { "_id" : ObjectId("5e5e782317aa3ef9ab8ab208"), "Name" : "David" }
Let us create a second collection with documents −
> db.demo396.insertOne({"details" : [ ... ObjectId("5e5e782317aa3ef9ab8ab207"), ... ObjectId("5e5e782317aa3ef9ab8ab208") ... ] ... } ... ) { "acknowledged" : true, "insertedId" : ObjectId("5e5e787817aa3ef9ab8ab209") }
Display all documents from a collection with the help of find() method −
> db.demo396.find();
This will produce the following output −
{ "_id" : ObjectId("5e5e787817aa3ef9ab8ab209"), "details" : [ ObjectId("5e5e782317aa3ef9ab8ab207"), ObjectId("5e5e782317aa3ef9ab8ab208") ] }
Following is the query to perform $lookup to array of object id's −
> db.demo396.aggregate([ ... { "$lookup": { ... "from": "demo395", ... "let": { "details": "$details" }, ... "pipeline": [ ... { "$match": { "$expr": { "$in": [ "$_id", "$$details" ] } } } ... ], ... "as": "output" ... }} ... ])
This will produce the following output −
{ "_id" : ObjectId("5e5e787817aa3ef9ab8ab209"), "details" : [ ObjectId("5e5e782317aa3ef9ab8ab207"), ObjectId("5e5e782317aa3ef9ab8ab208") ], "output" : [ { "_id" : ObjectId("5e5e782317aa3ef9ab8ab207"), "Name" : "Chris" }, { "_id" : ObjectId("5e5e782317aa3ef9ab8ab208"), "Name" : "David" } ] }
Advertisements