设为首页 加入收藏

TOP

使用morphia对基于mongodb应用开发 (五)
2014-11-24 07:14:02 来源: 作者: 【 】 浏览:12
Tags:使用 morphia 基于 mongodb 应用开发
em.out.println("Before delete the number of stores is: " + daoHolder.storeDao.count());
daoHolder.storeDao.deleteAllStore();
System.out.println("After delete the number of stores is: " + daoHolder.storeDao.count());
}
//根据地理位置查找
public void testFindNearPlace(){
Place p = new Place("somewhere",new double[]{23.5,67.8});
System.out.println("Find 5 stores near "+ p.toString());
List list = daoHolder.storeDao.findNearPlace(p);
for( Store s : list)
System.out.println(s.toString());

System.out.println("Find 5 KFC stores near "+ p.toString());
list = daoHolder.storeDao.findKFCNearPlace(p);
for( Store s : list)
System.out.println(s.toString());
}
//查找所有store
public void testFindAll(){
long start = System.currentTimeMillis();
List list = daoHolder.storeDao.find().asList();
for( Store s : list)
System.out.println(s.toString());
System.out.println(System.currentTimeMillis() - start);
}

static class DaoHolder{
PlaceDao placeDao;
StoreDao storeDao;
public DaoHolder(){
try {
Mongo mongo = new Mongo("localhost",27017);
Morphia morphia = new Morphia();
Datastore ds = morphia.createDatastore(mongo, "testDB");
placeDao = new PlaceDao(ds);
storeDao = new StoreDao(ds);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}


首先, 通过调用StoreDaoTest.m.testSave()保存一千家店铺,用来做数据准备。

其次,通过调用StoreDaoTest.m.testFindAll()查看数据是否ok,当然也可以通过shell窗口查看。

现在可以通过StoreDaoTest.m.testFindNearPlace()来查找地方p附近的相关店铺了,在这个方法中,我查了两次,一次是查找离p[loc=[23.5, 67.8], name=somewhere]最近的任意五个店铺,dao中这样写:

ds.createQuery(Store.class).field("place.loc").near(p.getLoc()[0], p.getLoc()[1]).limit(5).asList();

第二次是查找离p[loc=[23.5, 67.8], name=somewhere]最近的五个肯德基店铺,dao中这样写:

ds.createQuery(Store.class).filter("name", "肯德基")

.field("place.loc").near(p.getLoc()[0], p.getLoc()[1]).limit(5).asList();

输出结果:

Find 5 stores near Place [loc=[23.5, 67.8], name=somewhere]
Store [desc=麦当劳@Place_24.42_67.77, id=4ef9cc2cec9dcb16b1b552d2, name=麦当劳, place=Place [loc=[24.42, 67.77], name=Place_24.42_67.77]]
Store [desc=蒸功夫@Place_24.32_70.0, id=4ef9cc2dec9dcb16b1b553b6, name=蒸功夫, place=Place [loc=[24.32, 70.0], name=Place_24.32_70.0]]
Store [desc=必胜客@Place_24.08_64.89, id=4ef9cc2dec9dcb16b1b5544f, name=必胜客, place=Place [loc=[24.08, 64.89], name=Place_24.08_64.89]]
Store [desc=肯德基@Place_21.05_65.88, id=4ef9cc2dec9dcb16b1b5539e, name=肯德基, place=Place [loc=[21.05, 65.88], name=Place_21.05_65.88]]
Store [desc=吉野家@Place_25.78_65.66, id=4ef9cc2cec9dcb16b1b551f3, name=吉野家, place=Place [loc=[25.78, 65.66], name=Place_25.78_65.66]]
Find 5 KFC stores near Place [loc=[23.5, 67.8], name=somewhere]
Store [
首页 上一页 2 3 4 5 下一页 尾页 5/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇基于输出的数据库审计和三层数据.. 下一篇基于MongoDB GridFS的图片存储

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)