顯示具有 mongoDB 標籤的文章。 顯示所有文章
顯示具有 mongoDB 標籤的文章。 顯示所有文章

2013年7月9日 星期二

【Spring】Test in Spring MVC3

   1: package com.lywebii.goldprice;
   2:  
   3: import static org.junit.Assert.*;
   4:  
   5: import java.util.List;
   6:  
   7: import org.junit.After;
   8: import org.junit.Before;
   9: import org.junit.Test;
  10: import org.junit.runner.RunWith;
  11: import org.springframework.beans.factory.annotation.Autowired;
  12: import org.springframework.data.mongodb.core.MongoTemplate;
  13: import org.springframework.data.mongodb.core.geo.Box;
  14: import org.springframework.data.mongodb.core.geo.Point;
  15: import org.springframework.data.mongodb.core.index.GeospatialIndex;
  16: import org.springframework.data.mongodb.core.query.Criteria;
  17: import org.springframework.data.mongodb.core.query.Order;
  18: import org.springframework.data.mongodb.core.query.Query;
  19: import org.springframework.test.context.ContextConfiguration;
  20: import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  21:  
  22: import com.lywebii.goldprice.model.Floating;
  23:  
  24: @RunWith(SpringJUnit4ClassRunner.class)
  25: @ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/spring/root-context.xml"})
  26: public class TestFloatingController {
  27:     @Autowired
  28:     MongoTemplate mongoTemplate;
  29:     
  30:     @Before
  31:     public void setUp() throws Exception {
  32:         Floating floating = new Floating();
  33:         floating.setPosition(new double[]{25.0017035,121.5000121});//235台灣新北市中和區中和路37號
  34:         this.mongoTemplate.save(floating);
  35:         
  36:         floating = new Floating();
  37:         floating.setPosition(new double[]{25.0209304,121.4595818}); //220台灣新北市板橋區金華街90-140號
  38:         this.mongoTemplate.save(floating);
  39:         
  40:         floating = new Floating();
  41:         floating.setPosition(new double[]{25.0052171,121.4198273}); //238台灣新北市樹林區中正路214號
  42:         this.mongoTemplate.save(floating);
  43:         
  44:         floating = new Floating();
  45:         floating.setPosition(new double[]{22.6092776,120.316238}); //806台灣高雄市前鎮區南寧街
  46:         this.mongoTemplate.save(floating);
  47:     }
  48:  
  49:     @After
  50:     public void tearDown() throws Exception {
  51:         this.mongoTemplate.dropCollection(Floating.class);
  52:     }
  53:  
  54:     @Test
  55:     public void test() {
  56:         Query query = new Query();
  57:         query.sort().on("date", Order.DESCENDING);
  58:         
  59:  
  60:         this.mongoTemplate.indexOps(Floating.class).ensureIndex(new GeospatialIndex("position"));
  61:  
  62:  
  63:         List<Floating> list = this.mongoTemplate.find(new Query(Criteria.where("position").near(new Point(25.0052171,121.4198273)).maxDistance(5/111.12)),Floating.class);
  64:         System.out.println("Circle:"+list);
  65:  
  66:  
  67:         list = this.mongoTemplate.find(new Query(Criteria.where("position").within(new Box(new Point(0.2, 0.2), new Point(1, 1)))),Floating.class);
  68:         System.out.println("Box:"+list);
  69:  
  70:         
  71:     }
  72:  
  73: }

 


Above code was about usging monogdb template to save postion data and query near point that given.


IOC Configuration file using below code:



   1: @ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/spring/root-context.xml"})

2011年12月10日 星期六

mongoDB setup php module

上一篇簡單的試了一下mongoDB

接著這篇我們用PHP做為我的開發環境

在官網中 http://www.mongodb.org/display/DOCS/PHP+Language+Center

主要就是把mongoDB的modue加到php的extension上

目前選擇了mac做為安裝環境

於是再參考了

http://www.php.net/manual/en/mongo.installation.php#mongo.installation.osx

報行了 

sudo /Applications/XAMPP/xamppfiles/bin/pecl install mongo 


(當然要先安裝XAMPP,XAMPP會先預裝pecl可以減少安裝的 pecl的麻煩) 


不過遇到了一個錯誤


running: phpize-5.3.1



sh: phpize-5.3.1: command not found



ERROR: `phpize' failed



從網上找了大部都說是要使用PHP5-DEV,看起來都是太舊的資訊了



在 /Applications/XAMPP/xamppfiles/bin/ 裡也有了phpize-xxx的檔案



phpize會去讀取 .m5做為build的規則



於是到pecl官網直接抓取tar包 http://pecl.php.net/get/mongo-1.2.6.tar



tar開後(tar zxvf mongo-1.2.6.tar)看到其目錄有一個 .m5的檔案



先行使用phpize去執行build的動作



不過仍又在遇到另一個問題,再來出現的是找不到相關的header file



grep: /Applications/XAMPP/xamppfiles/include/php/php-5.3.1/php/main/php.h: No such file or directory



grep: /Applications/XAMPP/xamppfiles/include/php/php-5.3.1/php/Zend/zend_modules.h: No such file or directory



grep: /Applications/XAMPP/xamppfiles/include/php/php-5.3.1/php/Zend/zend_extensions.h: No such file or directory



Configuring for:



PHP Api Version:       



Zend Module Api No:    



Zend Extension Api No:




接著看到其實這的包裡有一般unix的build的內容



所以立即執行




  1.    ./configure 


  2.    ./make



完成後在build的目錄下即可找到mongo.so的lib了



最後把這個檔案複製至  Lib下



再把 php.ini在 extesion段加上  extension=mongo.so再重啟apache即可 



在php的code裡



$conn = new Mongo()



echo   ‘conn’. $conn;



即可正確印出  connection id



記得要把 mongoDB啟動(mongod)

2011年12月8日 星期四

mongoDB First Study

http://www.mongodb.org/ 以上是官網

直接進入文件連結 http://www.mongodb.org/display/DOCS/Home

Quickstart提供了各種平台的安裝方式

在Quickstart下方有一個連結

http://try.mongodb.org/

使用此連結,即可在尚未安裝 mongoDB前試一下

只要在其中打上  help即有說明文件

其中提到新增,修改,查詢.....沒刪除?!! 有低 在tutorial即會介紹刪除的指令

另外打上tutorial 即有說明的導覽內容

依tutorial的每一個步驟去做大致就可以了解到mongoDB的操作方式

其中提到mongoDB是文件導向的db,意思即是每份資料的存跟取都是使用javascript object去存跟取 e.g.

{name:’leon456’,sex:’male’,age:’25’}

此類的方式去新增,修改,查詢,刪除

在mongoDB裡不使用id做新刪改查的key

(似乎NoSQL的精神就是不用id去做這些事,那遇到相同的值時怎麼辨?! 待研究中)

算是初步的接觸啦   接下再再來學習如何串上程式

看起真的還蠻簡單的  Good Luck!!!