我有一个使用 Mongoengine 在 Django 上运行的 Web API,它执行以下操作
print "Saving", data
modelObj.dataList.append(data)
modelObj.save()
我还有一个 API,它在一个非常紧凑的循环中调用这个函数,这会导致以下日志:
Saving {'answer': u'3'}
[25/Apr/2013 17:12:00] "POST /submit HTTP/1.1" 200 10
Saving {'answer': u'2'}
Saving {Saving {'answer': u'5'}}
[25/Apr/2013 17:12:00] "POST /submit HTTP/1.1" 200 30
[25/Apr/2013 17:12:00] "POST /submit HTTP/1.1" 200 30
[25/Apr/2013 17:12:00] "POST /submit HTTP/1.1" 200 10
Saving {'answer': u'1'}
[25/Apr/2013 17:12:00] "POST /submit HTTP/1.1" 200 10
显然,保存是同时发生的。输出是我很少看到所有 5 个结果都写入数据库。我在这里忽略了一些真正基本的东西吗?
更新:使用 Mongoengine 0.7.9。文档状态:
Changed in version 0.5: In existing documents it only saves changed fields using
set / unset. Saves are cascaded and any DBRef objects that have changes are saved as well.
不知道这是否反驳了我的理论......