summaryrefslogtreecommitdiff
path: root/jstests/core/geo1.js
blob: e1dc23fe15316a91a07e67dd9cffe38ab3ee5321 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

t = db.geo1;
t.drop();

idx = { loc : "2d" , zip : 1 };

t.insert( { zip : "06525" , loc : [ 41.352964 , 73.01212  ] } );
t.insert( { zip : "10024" , loc : [ 40.786387 , 73.97709 ] } );
assert.writeOK( t.insert( { zip : "94061" , loc : [ 37.463911 , 122.23396 ] } ));

// test "2d" has to be first
assert.eq( 1 , t.getIndexKeys().length , "S1" );
t.ensureIndex( { zip : 1 , loc : "2d" } );
assert.eq( 1 , t.getIndexKeys().length , "S2" );

t.ensureIndex( idx );
assert.eq( 2 , t.getIndexKeys().length , "S3" );

assert.eq( 3 , t.count() , "B1" );
assert.writeError( t.insert( { loc : [ 200 , 200 ]  } ));
assert.eq( 3 , t.count() , "B3" );

// test normal access

wb = t.findOne( { zip : "06525" } );
assert( wb , "C1" );

assert.eq( "06525" , t.find( { loc : wb.loc } ).hint( { "$natural" : 1 } )[0].zip , "C2" );
assert.eq( "06525" , t.find( { loc : wb.loc } )[0].zip , "C3" );
// assert.eq( 1 , t.find( { loc : wb.loc } ).explain().nscanned , "C4" )

// test config options

t.drop();

t.ensureIndex( { loc : "2d" } , { min : -500 , max : 500 , bits : 4 } );
assert.writeOK( t.insert( { loc : [ 200 , 200 ]  } ));