質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Q&A

1回答

857閲覧

mongodb 4.0ではトランザクション(新機能)をロールバックできない?

redhat98

総合スコア236

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

0グッド

0クリップ

投稿2018/06/30 09:38

数日前に、mongodb 4.0がリリースされたので、早速mongodb 4.0のトランザクションを試してみました。
うきうきしながらC#でコードを書いてみると、うきうきした気持ちとは裏腹に、トランザクションをrollbackさせることが出来ませんでした。

RDBMSの気分でmongodb 4.0でトランザクションを使えるのかなと思ったのですが、
mongodb 4.0のトランザクションはRDBMSとは考え方が違うのですか?

ちなみに、私は今日からmongodbを初めた、超初心者です

実際に動かしたコード

C#

1 class Program 2 { 3 static void Main(string[] args) 4 { 5 var client = new MongoClient(); 6 7 var session = client.StartSession(); 8 session.StartTransaction(); 9 10 var db = client.GetDatabase("mongo-40"); 11 var bookCollection = db.GetCollection<Book>("book"); 12 13 bookCollection.InsertOne(new Book() 14 { 15 Id = ObjectId.GenerateNewId(), 16 IsbnCode = "1234567890", 17 Title = "あいうえお", 18 Author = "redhat98" 19 }); 20 21 session.AbortTransaction(); // ここでロールバックされるハズ 22// session.CommitTransaction(); //ここでコミットされるハズ 23 } 24 } 25 26 public class Book 27 { 28 public ObjectId Id { get; set; } 29 public string IsbnCode { get; set; } 30 public string Title { get; set; } 31 public string Author { get; set; } 32 } 33

mongodb 4.0のインストール方法は次を参照
Install MongoDB Community Edition on Ubuntu

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Q.1.:このmongodは3.6からアップグレードされた?もうし下の結果は"3.6"ならトランザクション使えないところです。

js

1db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )

Feature Compatibilityはメイジャーバージョンのアップグレードとダウングレードの安全ラッチみたいなものです。

もう3.6までダウングレードするつもりがないなら下のコマンドで4.0の機能を適用してください。

js

1db.adminCommand( { setFeatureCompatibilityVersion: "4.0" } )

あなたのテストDBはまだ本当の4.0モードが使っていないことは一つの推測だけです。さらに調べたいなら上のコードの結果(エラー文字列、コレクションの前後内容)を書いて下さい。

投稿2018/07/19 11:26

akira_kurogane

総合スコア48

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問