无需等待即无法创建多个mongodb集合

时间:2012-06-09 10:52:33

标签: java mongodb mongodb-java

如果我使用此代码:

private static void createDBAndCollections()
{
    Mongo mongo = new Mongo();
    DB db = mongo.getDB("dbname");

    BasicDBObject doc = new BasicDBObect();
    doc.put("somename","somevalue");

    ArrayList<String> collectionNames = new ArrayList<String>();
    collectionNames.add("userprofiles");
    collectionNames.add("companies");

    for(String collectionName : collectionNames)
    {
          DBCollection collection = db.getCollection(collectionName);
          collection.insert(doc);
    }
 }

在跑步#1之前: 数据库不存在即使它存在,也会使用db.dropDatabase()

从控制台中删除它

在跑步#1之后:

  • 我只看到一个集合而不是两个集合
  • 创建了“UserProfile”集合,其中包含一个对象
  • 未创建“公司”集合

运行#2之后:

  • 我现在看到两个收藏品
  • “UserProfile”现在有两个对象
  • “公司”集合已创建并且其中包含一个对象

我发现它很奇怪

所以我改变了我的for循环以包括等待10秒

for(String collectionName : collectionNames)
{
    DBCollection collection = db.getCollection(collectionName);
    collection.insert(doc);

    //wait for 10 seconds ... do not really know why ... but it works
    Thread.sleep(10 * 1000); //not showing try .. catch .. throw etc for this
 }

我清理了我的数据库并运行了这段代码 每次成功创建两个集合(需要时间......但是完成工作)

我错过了什么吗? 在我应该等待的某个地方是否有异步操作?

我知道更好的黑客不能创建下一个集合......直到确认第一个集合的存在

此代码不会一直运行...只有当我的应用程序第一次初始化时......它必须创建默认数据库并设置一堆集合

由于

注意:如何在提问时插入换行符......

MongoDB版本:2.0.6 windows 64位(当前产品发布) Java驱动程序:2.7.3

0 个答案:

没有答案