Is MongoDB thread-safe?

情到浓时终转凉″ 提交于 2019-12-08 17:23:29

问题


I'm running MongoDB on Windows. I have 1 or more threads that drop and recreate a collection.

Using mongo.exe with the show collections() command, I'm seeing multiple collections with the same name (well over 1,000 collections with the same name!).

When I run validate:

> db.MY_COLLECTION.validate()

I get:

{ "errmsg" : "ns not found", "ok" : 0, "valid" : false }

The size() command returns 0, and find() returns nothing.

My question is: Is MongoDB thread safe? A follow on question would be something like 'Am I doing this correctly (dropping and recreating) or is there a better way to refresh the whole content of a collection?'


回答1:


From mongodb documentation:

Thread safety

Only a few of the C# Driver classes are thread safe. Among them: MongoServer, MongoDatabase, MongoCollection and MongoGridFS. Common classes you will use a lot that are not thread safe include MongoCursor and all the classes from the BSON Library (except BsonSymbolTable which is thread safe). A class is not thread safe unless specifically documented as being thread safe.

All static properties and methods of all classes are thread safe.

You can search for the word Thread on this page:

http://mongodb.onconfluence.com/pages/viewpage.action?pageId=18907708&navigatingVersions=true#CSharpDriverTutorial-Threadsafety




回答2:


Changed in version 2.2.

MongoDB allows multiple clients to read and write a single corpus of data using a locking system to ensure that all clients receive a consistent view of the data and to prevent multiple applications from modifying the exact same pieces of data at the same time. Locks help guarantee that all writes to a single document occur either in full or not at all.

http://docs.mongodb.org/manual/faq/concurrency/



来源:https://stackoverflow.com/questions/6574515/is-mongodb-thread-safe

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!