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