MongoDB QueryData

From mi-linux
Revision as of 22:05, 18 October 2016 by Cm1958 (talk | contribs)
Jump to navigationJump to search


Show all data so far:

db.deptCollection.find()

Comes back messy, can make it better:

db.deptCollection.find().pretty()

Or just find one document:

db.deptCollection.find({"deptno":10}).pretty()

Finding an employee means using the array name too:

db.deptCollection.find({"employees.empno":7902}).pretty()

However, does mean you get back all the employees!

Since version 2.2 MongoDB's new $elemMatch can avoid this:

db.deptCollection.find({"deptno":20},  
  { _id: 0, employees: {$elemMatch: {empno: 7902}}}).pretty()

$elemMatch limits the contents of the employees array to contain only the first element matching the $elemMatch condition.

_id is a unique value automatically generated by MongoDB (like a Primary Key). To see it:

db.deptCollection.find({"deptno":20},  
  { employees: {$elemMatch: {empno: 7902}}}).pretty()

This is akin to a SQL query:

SELECT * FROM Emp WHERE deptno=20 AND empno = 7902

However, could you just query using the empno?