Mongodb c ++在插入对象内的集合时崩溃

时间:2016-10-19 11:08:54

标签: mongodb mongo-cxx-driver

我正在使用mongocxx驱动程序,我正在尝试对集合进行基本插入。

如果我只是遵循here提供的指南,它就可以正常使用。

但是,如果我将db和collection实例放在一个对象中,那么插件会在运行时崩溃。所以,举一个简单的例子,我有一个包含数据库和集合实例的结构,并尝试在main()中创建Thing实例后通过这些实例进行插入:

@Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if(Uri.parse(url).getHost().endsWith("192.168.1.34")) {
                    view.loadUrl(url);
                    Log.d("URL => ", url);    // load URL in webview
                    return false;
                }

                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                view.getContext().startActivity(intent); // Pass it to the system, doesn't match your domain 
                return true;
            }

我意识到这可以通过在main中启动数据库和集合并仅在Thing中存储指向集合的指针来解决。 然而,我想知道崩溃的原因,以及是否有可能将db一个集合实例放在一个对象中。

1 个答案:

答案 0 :(得分:2)

我认为问题可能是在mongocxx::instance inst{};的堆栈上创建的open_connection,因此在open_connection结束时,inst被破坏,某些数据可能会变得未定义。

来自documentation

  

生命周期:必须保持驱动程序的唯一实例。

inst移至主要功能。