Difference between revisions of "MongoDB QueryData"

From mi-linux
Jump to navigationJump to search
Line 6: Line 6:
 
  db.deptCollection.find()
 
  db.deptCollection.find()
  
Comes back messy, can make it better:
+
The data comes back messy. The pretty() function can be used to improve the layout::
  
 
  db.deptCollection.find().pretty()
 
  db.deptCollection.find().pretty()
  
Or just find one document:
+
The find() function can be used to find just one document.
 +
 
 +
The format is:
 +
<pre style="font:blue">
 +
db.deptCollection.find({"fieldName": "value"})
 +
</pre>
 +
 
 +
The fieldName must be in quotes, the value needs quotes if it is a string or date value.
 +
 
 +
For example, find department 10:
  
 
  db.deptCollection.find({"deptno":10}).pretty()
 
  db.deptCollection.find({"deptno":10}).pretty()

Revision as of 23:49, 18 October 2016

Main Page >> MongoDB >>MongoDB Workbook >> Querying Collections

Querying a collection

Show all data so far:

db.deptCollection.find()

The data comes back messy. The pretty() function can be used to improve the layout::

db.deptCollection.find().pretty()

The find() function can be used to find just one document.

The format is:

 db.deptCollection.find({"fieldName": "value"})

The fieldName must be in quotes, the value needs quotes if it is a string or date value.

For example, find department 10:

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?

Next Step

Updating the collection