MongoDB - getCollection(String name)和getCollectionFromString(String collectionName)之间的区别?

时间:2015-03-16 19:14:19

标签: java mongodb database

有人可以向我强调一下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/拉出来)

1 个答案:

答案 0 :(得分:1)

Karl Seguin对此forum的答复:

  

可以通过命名空间来识别集合," db.collection"。   getCollectionFromString获取那种类型的集合   命名空间。 getCollection仅为原始集合获取它。

     

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

另一个 explanation

  

我认为你使用的将真正取决于你的期望   您的用户输入。

     

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

     

如果它是一个真正动态的系统而且用户可能会说'#34;让我这样做   来自数据库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();
    }
  }
}
getCollectionFromString(String s)

Implementation

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);
 }