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 |
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
- cd /tmp
- tar xvzf mongo-1.4.3.tgz
- yum install php-devel #on CentOS
- phpize
- ./configure
- make
- make install
add extension=mongo.so to /etc/php.ini
In CentOS 64 bit the mongo.so should be located in /usr/lib64/php/modules/mongo.so
Aggregation examples
http://docs.mongodb.org/manual/reference/sql-aggregation-comparison/
Example 1
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 )
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.
Update field on document
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
Sort by field
- descending
- db.rxtx.find().sort({timestamp:0}).limit(10)
- ascending
- db.rxtx.find().sort({timestamp:1}).limit(10)