【问题标题】:MongoDB - Difference between getCollection(String name) and getCollectionFromString(String collectionName)?MongoDB - getCollection(String name) 和 getCollectionFromString(String collectionName) 之间的区别?
【发布时间】:2015-03-16 19:14:19
【问题描述】:

有人可以为我突出显示 MongoDB DB Java api 中记录的 getCollection(String name) 和 getCollectionFromString(String collectionName) 之间的区别吗?

public DBCollection getCollectionFromString(String collectionName)
Returns a collection matching a given string.
Parameters: collectionName - the name of the collection
Returns: the collection

public DBCollection getCollection(String name)
Gets a collection with a given name.
Parameters: name - the name of the collection to return
Returns: the collection

带有示例的插图将是最有帮助的。 (来自https://api.mongodb.org/java/3.0/

【问题讨论】:

    标签: java mongodb database


    【解决方案1】:

    Karl Seguin 在此 forum 中的回复:

    集合可以通过命名空间“db.collection”来标识。 getCollectionFromString 获取该类型的集合 命名空间。 getCollection 只为原始集合获取它。

    您需要/使用 getCollectionFromString 的地方有更多 与构建某种类型的 mongodb 管理工具或可能 跨越多个数据库的 CMS……那种动态驱动的 系统。 getCollection 对于大多数应用程序来说可能更为典型。

    另一个explanation

    我认为您使用哪个实际上取决于您的期望 您的用户输入。

    如果他们对所有数据库一无所知,那么使用 getCollection() 是有道理的......我认为情况就是这样。

    如果它是一个真正的动态系统,用户可能会说“给我 来自数据库 app1 的用户”,那么 getCollectionFromStirng 可能 有道理。

    但是,我认为在第二种情况下,最好简单地 有两个字段:数据库和集合。这样就更明确了 并且更容易处理。为什么您的用户应该知道该数据库 和集合在 MongoDB 中是点分隔的?

    一个example来说明getCollection(String s)

    package com.example.core;
    
    import java.net.UnknownHostException;
    import java.util.Set;
    
    import com.mongodb.DB;
    import com.mongodb.DBCollection;
    import com.mongodb.Mongo;
    import com.mongodb.MongoException;
    
    /**
     * Java : Get collection from MongoDB
     * 
     */
    public class GetCollectionApp {
      public static void main(String[] args) {
    
        try {
    
            Mongo mongo = new Mongo("localhost", 27017);
            DB db = mongo.getDB("yourdb");
    
            // get list of collections
            Set<String> collections = db.getCollectionNames();
    
            for (String collectionName : collections) {
                System.out.println(collectionName);
            }
    
            // get a single collection
            DBCollection collection = db.getCollection("yourCollection");
            System.out.println(collection.toString());
    
            System.out.println("Done");
    
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (MongoException e) {
            e.printStackTrace();
        }
      }
    }
    

    ImplementationgetCollectionFromString(String s)

    public DBCollection getCollectionFromString(String s){
         DBCollection foo = null;
    
         while (s.contains(".")){
              int idx = s.indexOf(".");
              String b = s.substring(0, idx);
              s = s.substring(idx + 1);
              foo = getCollection(b);
         }
    
         if (foo != null)
             return foo;
         return getCollection(s);
     }
    

    【讨论】:

      猜你喜欢
      • 2014-03-04
      • 2019-11-29
      • 1970-01-01
      • 2013-06-25
      • 1970-01-01
      • 1970-01-01
      • 2013-03-14
      • 1970-01-01
      • 2012-03-04
      相关资源
      最近更新 更多