From 811098f90a12c85b0d1feea9aa4d8dbeb4bf1df5 Mon Sep 17 00:00:00 2001 From: Louis Chatriot Date: Thu, 23 May 2013 20:27:36 +0300 Subject: [PATCH] Update README.md --- README.md | 41 ++++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 6d20888..ac83292 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,9 @@ db.insert(document, function (err, newDoc) { // Callback is optional ``` ### Finding documents -You can use `find` to look for multiple documents matching you query, or `findOne` to look for one specific document. You can select documents based on field equality or use comparison operators (`$lt`, `$lte`, `$gt`, `$gte`). You can also use logical operators `$or` and `$and`. See below for the syntax. +You can use `find` to look for multiple documents matching you query, or `findOne` to look for one specific document. You can select documents based on field equality or use comparison operators (`$lt`, `$lte`, `$gt`, `$gte`, `$in`, `$nin`, `$ne`). You can also use logical operators `$or`, `$and` and `$not`. See below for the syntax. + +#### Basic querying ```javascript // Let's say our datastore contains the following collection @@ -96,13 +98,26 @@ db.find({ humans: { genders: 2 } }, function (err, docs) { // docs is empty, because { genders: 2 } is not equal to { genders: 2, eyes: true } }); -// If a document's field is an array, matching it means matching any element of the array -db.find({ satellites: 'Phobos' }, function (err, docs) { - // docs contains Mars. Result would have been the same if query had been { satellites: 'Deimos' } +// Find all documents in the collection +db.find({}, function (err, docs) { }); -// You can use comparison operators $lt (less than), $lte (less than or equal), -// $gt (greater than) and $gte (greater than or equal) +// The same rules apply when you want to only find one document +db.findOne({ _id: 'id1' }, function (err, doc) { + // doc is the document Mars + // If no document is found, doc is null +}); +``` + +#### Comparison operators ($lt, $lte, $gt, $gte, $in, $nin, $ne) +The syntax is `{ field: { $op: value } }` where `$op` is any comparison operator: + +* `$lt`, `$lte`: less than, less than or equal +* `$gt`, `$gte`: greater than, greater than or equal +* `$in`: member of. `value` must be an array of values +* `$ne`, `$nin`: not equal, not a member of + +```javascript // They work on numbers and strings (lexicographical order in that case) db.find({ "humans.genders": { $gt: 5 } }, function (err, docs) { // docs contains Omicron Persei 8, whose humans have more than 5 genders (7). @@ -110,6 +125,11 @@ db.find({ "humans.genders": { $gt: 5 } }, function (err, docs) { // For example: { "human.genders": { $lte: "Deimot" } } }); +// If a document's field is an array, matching it means matching any element of the array +db.find({ satellites: 'Phobos' }, function (err, docs) { + // docs contains Mars. Result would have been the same if query had been { satellites: 'Deimos' } +}); + // You can use logical operator $or and $and ($and is the same // as just using a normal query object) // Syntax is { $logicalOperator: [query1, query2, ...] } @@ -122,15 +142,6 @@ db.find({ $or: [{ planet: 'Earth' }, { planet: 'Mars' }], inhabited: true }, fun // docs contains Earth }); -// Find all documents in the collection -db.find({}, function (err, docs) { -}); - -// The same rules apply when you want to only find one document -db.findOne({ _id: 'id1' }, function (err, doc) { - // doc is the document Mars - // If no document is found, doc is null -}); ``` ### Updating documents