我知道,当插入/更新/删除文档时,MongoDB默认使用异步写入。我的问题是如果这些更新仍然按顺序执行。MongoDB-upsert:火和忘记
假设以下UPSERT查询,随后删除查询:
db.servers.update({ "server": "abcdef" }, { "$set": { "lastSeen": new Date()}}, /*upsert=*/ true);
db.servers.update({ "server": "uvwxyz" }, { "$set": { "lastSeen": new Date()}}, /*upsert=*/ true);
db.servers.remove({ "lastSeen": { "$lt": new Date(Date.now() - 3600000) } });
如果这些命令对应的是在这些顺序执行,然后保证(如果操作成功)被插入第一两个文件/更新,然后删除操作将删除过时的文件?我希望这两个插入/删除的文档都不会被删除,因为它们的“lastSeen”值已更新。
我认为“async-write-thing”只与数据从RAM写入光盘的时间有关。我认为它不会影响命令的顺序,所以上面的例子总是能工作(如果更新成功),对吗?
编辑:我使用一个单一的mongod实例。没有副本集,没有分片:-)