Mongo DB GridFS +文档事务(典型用例)

时间:2012-03-19 16:31:34

标签: .net mongodb database

我已经从MSSQL世界变成了mongo,而且我已经得到了关于典型用例的未解答的问题。 (我在官方网站上没有找到相关信息)。 我做的事情都是这样的:

例如: 我想保护一些文件+元数据(文件名+文件长度)。

  1. “创建文档对象”:var document = new MyDocument(“file1.txt”,65536);
  2. “保存流”:var streamId = GridFS.Upload(myStream);
  3. “链接流与元数据”:document.StreamId = streamId;
  4. “保存文档”:myDocumentCollection.Insert(document);
  5. 问题

    1)因为如果我的操作在步骤 2 之后失败了,我没有交易如何处理情况 - 只有流本身。什么是正确的处理方式?数据库分片到10台服务器,并祈祷它永远不会失败?创建后台服务以清除不一致的记录?

    2)如何正确处理GridFS:删除文件+流,以容错方式重写流?

    3)如何处理我的操作需要更改几个对象的情况?

1 个答案:

答案 0 :(得分:0)

1& 2)上传失败时应该收到MongoGridFSException。所以只需在你认为合适的问题中处理catch子句。如果元数据不是太大,您还可以使用备选upload api并通过createOptions参数传递元数据。

3)对于更一般的情况,如果要确保上一次操作成功,可以使用getLastError command确保上次操作没有错误。