Casbah 2.9.2を使用しています
私のmongodbスキーマは次のようになります:
[ _id : "Triangle", Info: [ Color : "Red", Line : "Thin", UseID : "1", SourceId : "2" ] ]
_id、Color、および Line が一緒に一意であるかどうかを最初に確認する更新行を記述できるようにしたいと考えています。これにより、コマンドラインから必要なものが正確に得られます。
db.shapes.update( { _id : 'Triangle', Info : { $not : { $elemMatch : { Color : 'Red', Line : 'Thick' } } } }, { $push : { Info : { Color : 'Red', Line : 'Thick', UseID : '2', SourceId : '3' } } }, true)
私にこのエントリを与える:
[ _id : "Triangle", Info : [ { Color : "Red", Line : "Thin", UseID : "1", SourceId : "2" }, { Color : "Red", Line : "Thick", UseID : "2", SourceId : "3" } ] ]
ただし、Casbah for Scala に変換すると、次のようにはなりません。
shapesCollection.update( { "_id" -> shape, "Info" $not { _ $elemMatch { "Color" -> color, "Line" -> line } } }, { $push -> { "Info" -> { "Color" -> color, "Line" -> line, "UseId" -> useId, "SourceId" -> srcId } } }, true )
最初の苦情 (IntelliJ から) は、すべての ',' を ';' にする必要があるということですが、これは正しくないと感じていますが、デバッグするために義務付けられているため、次のような 2 番目のエラーが表示されます。
「エラー: (java.lang.String, java.lang.String) から利用できる暗黙的なビューがありません => com.mongodb.casbah.query.Imports.DBObject。デフォルト引数を含むアプリケーションでエラーが発生しました。"Info" $not { _ $elemMatch {"
質問は、Casbah のコマンド ラインから実行している更新を実行できますか? もしそうなら、どのように?
ありがとう!