Mongodb 您如何诊断Mongo中的书面问题?
我有一个Mongo数据库(v2.4.10)设置和一个辅助数据库,我正在将数据保存到其中。有时,在保存一个新文档并试图检索它之后,我会发现一个文档未被找到的异常,即使在手动检查时它也在那里 这里有一个很小的例子,但不幸的是,问题并没有持续地重现。我怀疑问题是因为在辅助服务器拥有数据副本之前试图从数据库中读取数据Mongodb 您如何诊断Mongo中的书面问题?,mongodb,mongoengine,database,Mongodb,Mongoengine,Database,我有一个Mongo数据库(v2.4.10)设置和一个辅助数据库,我正在将数据保存到其中。有时,在保存一个新文档并试图检索它之后,我会发现一个文档未被找到的异常,即使在手动检查时它也在那里 这里有一个很小的例子,但不幸的是,问题并没有持续地重现。我怀疑问题是因为在辅助服务器拥有数据副本之前试图从数据库中读取数据 from mongoengine import connect, Document class User(Document): date_creation = DateTimeF
from mongoengine import connect, Document
class User(Document):
date_creation = DateTimeField(default=datetime.datetime.utcnow)
username = StringField(required=True, unique=True)
user = User()
user.username = 'nick'
user.save()
user = User.objects.get(username='nick') # exception thrown here matching User not found
user.username = 'changed'
user.save()
有没有办法诊断这是否属实?那么,我应该只调用user.save(write\u concern={'w':0})
使用save(…,write\u concern={w:2,fsync:True},…)
由于mongoengine写入关注点默认为。因为您希望它也传播到辅助服务器,所以您需要它。我不确定我是否理解,您是说我对问题的诊断是正确的,但它不应该是写入关注点{w':0},而应该是副本确认的{w':2}。我以为那是默认的?是的,你是对的。我认为你的诊断是正确的(我不能肯定,但听起来很合理)。是的,您应该将其更改为
2
。据我记忆所及,默认值为0(但在2.4中对write concern进行简短搜索并没有发现它)。