我在Windows上运行MongoDB。我有一个或多个线程删除并重新创建一个集合。
将mongo.exe
与show collections()
命令一起使用,我看到多个具有相同名称的集合(超过1,000个具有相同名称的集合!)。
当我运行验证时:
> db.MY_COLLECTION.validate()
我明白了:
{ "errmsg" : "ns not found", "ok" : 0, "valid" : false }
size()
命令返回0,find()
不返回任何内容。
我的问题是:MongoDB线程安全吗?接下来的问题就像'我是否正确地执行此操作(删除并重新创建)或者是否有更好的方法来刷新集合的整个内容?'
答案 0 :(得分:6)
来自mongodb文档:
线程安全
只有少数C#Driver类是线程安全的。其中包括:MongoServer,MongoDatabase,MongoCollection和MongoGridFS。您将使用很多非线程安全的公共类包括MongoCursor和BSON库中的所有类(BsonSymbolTable除外,它是线程安全的)。除非特别记录为线程安全,否则类不是线程安全的。
所有类的所有静态属性和方法都是线程安全的。
您可以在此页面上搜索“线程”一词:
答案 1 :(得分:4)
2.2版更改。
MongoDB允许多个客户端使用锁定系统读取和写入单个数据库,以确保所有客户端都能获得一致的数据视图,并防止多个应用程序同时修改完全相同的数据。锁定有助于保证对单个文档的所有写入完全发生或根本不发生。