【问题标题】:Why does getDatabaseNames() return a List and getCollectionNames() return a set in mongo DB为什么 getDatabaseNames() 返回一个 List 而 getCollectionNames() 在 mongo DB 中返回一个集合
【发布时间】:2013-03-04 17:00:09
【问题描述】:

在以下程序中,getDatabaseNames() 返回一个值列表,getCollectionNames() 返回一组值。为什么不都返回Set

这是否意味着我们可以创建具有相同名称的数据库?

package demo;

import java.util.List;
import java.util.Set;

import com.mongodb.DB;
import com.mongodb.MongoClient;

public class Collections2 {

public static void main(String[] args) {
    MongoClient client=null;
    try {
        client=new MongoClient();

        //Lists all the database names 
        System.out.println("List of databases ");
        List<String> DBset=client.getDatabaseNames();
        for(String string:DBset){
                System.out.println(string);
        }

        //list all the collection names in school DB
        DB db=client.getDB("school");
        System.out.println("List of collections in school DB");
        Set<String> set=db.getCollectionNames();
        for (String string:set) {
            System.out.println(string);
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
}

}    

【问题讨论】:

    标签: mongodb mongoose mongo-java


    【解决方案1】:

    这听起来可能很奇怪,但是是的!

    这并不是 Java 特有的。正如this related question 所述,您也可以使用命令行工具mongo 复制此行为。

    引用问题:

    这是如何发生的:

    1. 我已经有一个名为“test1”的数据库,它只存储带有文档的集合。
    2. 然后,我使用 GridFS 来存储文件,因此它包含二进制文件。(实际上,我认为这可能是原因,但我不知道为什么)
    3. 现在问题发生了。当我尝试使用使用 test1 之类的命令访问“test1”时。将创建一个同名“test1”的空数据库。

    就像 show dbs 演示的那样:

    test1   empty
    test1   0.0625GB
    

    至于如何处理,我不确定,因为Java驱动只有这种获取DB的方法(当前稳定版,2.10.1):

    另一个函数 getUsedDatabases() 将返回数据库实例,它只返回此运行中 MongoDB 驱动程序实例已使用的数据库对象。

    这意味着,在同一个运行时,您可以利用这个“功能”(?),并处理同名的两个数据库,但这会变得丑陋如果出现问题,需要清理的情况,并且在清理混乱之前关闭 JVM ......(理论上,因为我现在无法确认这一点......当我靠近我的时候,我会报告我的发现开发 Mongo 实例。)

    【讨论】:

      猜你喜欢
      • 2021-10-18
      • 1970-01-01
      • 2012-12-02
      • 2017-09-01
      • 2018-11-30
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      • 2013-09-23
      相关资源
      最近更新 更多