mongo查询java 手动抛出异常的这个异常,各位大侠知道是啥原因吗

mongo查询抛出的这个异常,各位大侠知道是啥原因吗
软件版本:python2.7,pymongo3.2 ,MongoDB3.2
错误信息:在用find_one方法查询时 data=db.find_one({'cid':tempDict['cid']})&,抛出如下错, 查了好久也没查出原因。。。
File "build/bdist.linux-x86_64/egg/pymongo/collection.py", line 1006, in find_one
& & for result in cursor.limit(-1):
& File "build/bdist.linux-x86_64/egg/pymongo/cursor.py", line 1097, in next
& & if len(self.__data) or self._refresh():
& File "build/bdist.linux-x86_64/egg/pymongo/cursor.py", line 1019, in _refresh
& & self.__read_concern))
& File "build/bdist.linux-x86_64/egg/pymongo/cursor.py", line 905, in __send_message
& & helpers._check_command_response(doc['data'][0])
& File "build/bdist.linux-x86_64/egg/pymongo/helpers.py", line 196, in _check_command_response
& & raise OperationFailure(msg % errmsg, code, response)
OperationFailure: could not find host matching read preference { mode: "primary", tags: [ {} ] } for set rs1
貌似是无法连接mongodb 的primary主服务器。
All read operations use only the current replica set&.&&This is the default read mode. If the primary is unavailable, read operations produce an error or throw an exception.
看样子的确是这样. primary 服务器不可用。 read操作就会抛出异常。
--- 共有 3 条评论 ---
: 看看网络原因呢。表象上就是无法连上primary服务器了。为什么连不上原因就太多了。。
但不知道如何下手,我们的mongo是两台分片,难道并发量大,就出现连不上的情况,目前这种错只是偶尔出现
非常感谢Karblue,你的答复总算让我找到点头绪昨天去面试遇到一道java设计机试题,让写出最优设计代码,我用接口实现的,结果被鄙视
题目是这样的,市场上所有商品都要交销售税10%,除了书籍、食品和药品,进口商品还有交5%的进口税,税种和商品种类以后都要变化
给出了一份商品名单表,计算出本商品单总价和总共要交的税
设计出最优的代码,体现面向对象和多态设计,使代码有很好的扩展性
商品种类&&& 单价&&& 数量&& 是否进口
book&&&&&& 12.10&&& 50&&&& 否
music CD&& 11.10&&& 10&&& 是
请各位大神说说自己的设计思路,相互学习。
《重构改善现有代码设计》一书开篇就类似例子,建议去看看
一堆map加一个完了,没有设计模式的模式是最好的模式.
明显规则引擎,呵呵我博客写一篇Bizzwhizz的博客,你看看改改,呵呵他一定满意,喜欢。
我的想法是用装饰者模式,将税收当成装饰,以后不管有多少种税收,只要在原有对象上装饰多一个税收类就能适应变化了,改动也只是多写一个税收类而已。 然后具体的税收标准还可以在计算税收的方法里去实现。又因为需求说明种类是变化的,所以就不太好实现为继承的形式,我想到的是用聚合的方法,这样种类的变化就与商品分离开来了。
class Goods{
//商品类型
private GoodsT
//是否进口
public Goods(){}
public Goods(String name,double price,boolean inlet,GoodsType type){
this.name =
this.price =
this.inlet =
this.type =
public boolean isInlet(){
public String getName(){
public double getPrice(){
public double moneyPayForTax(){
class GoodsType{
public int typeC
public String typeN
public GoodsType(String typeName,int typeCode){
this.typeCode = typeC
this.typeName = typeN
abstract class GoodsTaxDecroter extends Goods{
public GoodsTaxDecroter(Goods goods){
this.goods =
public boolean isInlet(){
return goods.isInlet();
public String getName(){
return goods.getName();
public double getPrice(){
return goods.getPrice();
//根据不同税收,编写税收函数,这样就可以瞒住税收多样的条件要求
public abstract double moneyPayForTax();
class SellTax extends GoodsTaxDecroter{
//税收比例
private double percent = 0.1;
public SellTax(Goods goods){
super(goods);
public double moneyPayForTax(){
return goods.getPrice() * percent + goods.moneyPayForTax();
class InletTax extends GoodsTaxDecroter{
//税收比例
private double percent = 0.2;
public InletTax(Goods goods){
super(goods);
public double moneyPayForTax(){
if(goods.isInlet()){
return goods.getPrice() * percent + goods.moneyPayForTax();
return goods.moneyPayForTax();
public class Test{
public static void main(String[] args){
Goods book = new SellTax(new Goods(&设计模式&,56.0,false,new GoodsType(&书籍&,1)));
Goods musicCD = new InletTax(new SellTax(new Goods(&音乐CD&,11.0,true,new GoodsType(&影音&,2))));
System.out.println(book.getName()
税收 : & + book.moneyPayForTax());
System.out.println(musicCD.getName()
税收 : & + musicCD.moneyPayForTax());
....向对象和多态设计 这个我不懂,野路子出身。
加一个免进口税的商品种类配置表... 然后写个sql.....
是不是想太多了,一个抽象的商品类+N个具体的商品,各个商品实现自己的计算价格不就行了么?
税种和商品种类以后都要变化,变化的东西应该抽象,所以商品、税种都应该继承或者是接口。税种和商品都在变化,所以计算税金的方法也应该抽象,是一个接口,用策略模式实现税金计算比较合理。
--- 共有 1 条评论 ---
我刚开始设计时就忽略了商品,定义了个商品基本类,税金计算用了接口和策略模式,如果商品采用抽象继承的话,抽象类还有实现接口吗?各个子类还用实现接口吗,我有点迷糊,搞不太清楚
接口,或者类。
标准的策略模式场景吧??
我觉得接口比较好,继承或者实现一下,定义点关键属性 就OK了。。。不懂什么设计模式。。。

我要回帖

更多关于 java抛出自定义异常 的文章

 

随机推荐