MongoDB

Query by data type

Select all documents in the inventory collection where the price field value is a Double.

   1 db.inventory.find( { price: { $type : 1 } } )

Select all documents in the inventory collection where the datex field value is a Date.

   1 db.inventory.find( { datex: { $type : 9 } } )

Data types

Type

Number

Double

1

String

2

Object

3

Array

4

Binary data

5

Undefined (deprecated)

6

Object id

7

Boolean

8

Date

9

Null

10

Regular Expression

11

JavaScript

13

Symbol

14

JavaScript (with scope)

15

32-bit integer

16

Timestamp

17

64-bit integer

18

Min key

255

Max key

127

PHP driver

Manual install

Aggregation examples

http://docs.mongodb.org/manual/reference/sql-aggregation-comparison/

Example 1

   1 SELECT country,city,min(timestampx) as minx,max(timestampx) as maxx,count(*) as countx
   2 FROM collx 
   3 GROUP BY country,city 
   4 WHERE idxyz=1234 AND timestampx>='2011-06-04T00:00:00' AND timestampx<='2012-12-04T23:59:59'
   5 ORDER BY minx

   1 db.collx.runCommand( 
   2   {  "aggregate":"collx" , "pipeline":[
   3       {"$match": 
   4          {
   5            idxyz:1234 , 
   6            "timestampx":{ 
   7              "$gte":ISODate("2011-06-04T00:00:00") , 
   8              "$lte":ISODate("2012-12-04T23:59:59") 
   9            }   
  10          } 
  11       } 
  12       ,
  13       {"$group": 
  14          {
  15            "_id":  {"country":"$country","city":"$city"} , 
  16            "minx":{"$min":"$timestampx"} , 
  17            "maxx":{"$max":"$timestampx"} ,  
  18            "countx":{"$sum":1}  
  19          }    
  20       }
  21       ,
  22       {
  23         "$sort":
  24         { 
  25           "minx":1
  26         } 
  27       } 
  28     ]       
  29   }   
  30 )

   1 db.collx.aggregate( 
   2      [
   3       {"$match": 
   4          {
   5            idxyz:1234 , 
   6            "timestampx":{ 
   7              "$gte":ISODate("2011-06-04T00:00:00") , 
   8              "$lte":ISODate("2012-12-04T23:59:59") 
   9            }   
  10          } 
  11       } 
  12       ,
  13       {"$group": 
  14          {
  15            "_id":  {"country":"$country","city":"$city"} , 
  16            "minx":{"$min":"$timestampx"} , 
  17            "maxx":{"$max":"$timestampx"} ,  
  18            "countx":{"$sum":1}  
  19          }    
  20       }
  21       ,
  22       {
  23         "$sort":
  24         { 
  25           "minx":1
  26         } 
  27       } 
  28     ]       
  29 )

   1 db.collx.runCommand(  { "aggregate":"collx" , "pipeline":[
   2       {"$group": { "_id":  {"fld":"$fldx"} , "countx":{"$sum":1}  }   }
   3       ,
   4       { "$sort": { "countx":1  } } 
   5 ] } ).result

Get creation timestamp from document

Inside the creation timestamp is stored in the _id field .

Using the method getTimestamp on an ObjectiId, is possible to get the creation timestamp.

   1 // runned inside mongo shell
   2 ObjectId("52840c4facb4f200d8a6518a").getTimestamp()
   3 // returned ISODate("2013-11-13T23:33:35Z")
   4 

Update field on document

   1 db.products.update( 
   2 { sku: "abc123" },
   3 { $set: { quantity: 500,  instock: true  }    }
   4 )

Find documents that don't have a field

   1 db.products.find( { fieldx:{$exists:false} } )

Find docs with status equal Failure and only show the _id and status fields

   1 db.products.find( {status:"Failure"} , { status:1  } )

Set journal small

   1 # smallfiles=true to the config file /etc/mongodb.conf.
   2 service mongodb stop
   3 cd /var/lib/mongodb/journal
   4 rm *
   5 service mongodb start
   6 mongo 

Sort by field

MongoDB (last edited 2020-07-31 22:22:08 by localhost)