Mongo中append方法使用

在MongoDB的官网已经很详细的介绍了各种客户端的使用,其中也包括java的,在此,仅对几个比较疑惑的地方做个标注:

(1)、如何向db中添加collection?

如果在api文档中找不到答案,那就去看源代码吧。可以看到com.mongodb.DB类中是如何定义getCollection方法的。其中DB类是抽象类,且doGetCollection(name)方法也是抽象的。

 

Java代码  收藏代码
  1. /** 
  2.      * <strong>Gets a collection with a given name.</strong> 
  3.      * I<strong>f the collection does not exist, a new collection is created</strong>. 
  4.      * @param name the name of the collection to return 
  5.      * @return the collection 
  6.      */  
  7.     public final DBCollection getCollection( String name ){  
  8.         DBCollection c = doGetCollection( name );  
  9.         return c;  
  10.     }  

 

可见,当调用db.getCollection( String name )方法时,如果以name命名的collection不存在,则自动创建一个,并返回。

 

(2)、BasicDBObject的append和put两个方法有何区别?

首先看一下BasicDBObject的继承结构,com.mongodb.BasicDBObject --》com.mongodb.DBObject(接口)  --》org.bson.BSONObject(接口)。

其中,put( String key , Object v )方法是BSONObject接口定义的,具体定义如下:

 

Java代码  收藏代码
  1. public interface BSONObject {  
  2.     /** 
  3.      * Sets a name/value pair in this object. 
  4.      * @param key Name to set 
  5.      * <strong>@param v Corresponding value</strong> 
  6.      * <strong>@return <tt>v</tt></strong> 
  7.      */  
  8.     public Object put( String key , Object v );  
  9. }  

 而append( String key , Object val )方法的定义是在BasicDBObject类中,具体定义如下:

 

Java代码  收藏代码
  1. public class BasicDBObject extends BasicBSONObject implements DBObject {  
  2.     @Override  
  3.     public BasicDBObject append( String key , Object val ){  
  4.         put( key , val );  
  5.         <strong>return this;</strong>  
  6.     }  
  7. }  

 可以看出,put方法返回的是value值,而append方法返回的是对象本身,这样就可以向使用链式的方式添加数据,如:new BasicDBObject().append("username","zhang").append("password","111111");

posted on 2014-01-26 10:16  欲上云端  阅读(2558)  评论(0编辑  收藏  举报