Replace nested SQL selects in MongoDB

Source: Internet
Author: User
Tags mongo shell

// I want to make an efficient query to find all users who have theiruserids listed in a usergroup.// Ideally I want to make this as a single request to mongodb.// What I want corresponds to nested selects in SQL.// I have tried this in the mongo shell:db.user.save({_id:"u1", Name:"u1 name"});db.user.save({_id:"u2", Name:"u1 name"});db.user.save({_id:"u3", Name:"u3 name"});db.usergroup.save({_id:"g1", Users: ["u2","u3"]});// This is the select I want to do, but without hardcoding the["u2","u3"] array:db.user.find({_id:{$in:["u2","u3"]}}).forEach(printjson);// So the question is how to get the array of userids in the $inoperator extracted with a query such that the enite query can be madewith a single request.// A "nested query" like this does not work://db.user.find({_id:{$in:db.usergroup.find({_id:"g1"},{_id:0,Users:1})}}).forEach(printjson);//Gives this error://Tue Mar 27 06:17:41 uncaught exception: error: { "$err" : "invalidquery", "code" : 12580 }//failed to load: mongoNestedSelect.js


Solution:

db.usergroup.find({"_id":"g1"}).forEach(function(doc){  db.user.find({_id:{$in:doc.Users}}).forEach(printjson);})


Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.