我正在使用Casbah 2.9.2。
我的MongoDB模式如下:
[ _id : "Triangle", Info : [ Color : "Red", Line : "Thin", UseID : "1", SourceId : "2" ] ]
我想能够编写一条更新语句,首先检查_id、Color和Line是否组合唯一,如果是,则更新UseID和SourceID,否则创建一个新的“Info”条目。从命令行得到了完全满足我的结果。
给我这个条目:
然而,当我将其翻译为Scala的Casbah时,它并没有起作用:
第一个问题(来自 IntelliJ)是希望所有的 “,” 变成 “;”,但我认为这不正确。为了进行调试,我采纳了这个要求,这导致了第二个错误:
“错误:(java.lang.String, java.lang.String) => com.mongodb.casbah.query.Imports.DBObject 没有隐式视图可用。涉及默认参数的应用程序中发生了错误。“信息”$not { _ $elemMatch {"
所以我想问的是,我能否在 Casbah 的命令行中完成我的更新操作?如果可以,该怎么做呢?
谢谢!
我的MongoDB模式如下:
[ _id : "Triangle", Info : [ Color : "Red", Line : "Thin", UseID : "1", SourceId : "2" ] ]
我想能够编写一条更新语句,首先检查_id、Color和Line是否组合唯一,如果是,则更新UseID和SourceID,否则创建一个新的“Info”条目。从命令行得到了完全满足我的结果。
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" } ] ]
然而,当我将其翻译为Scala的Casbah时,它并没有起作用:
shapesCollection.update( { "_id" -> shape, "Info" $not { _ $elemMatch { "Color" -> color, "Line" -> line } } }, { $push -> { "Info" -> { "Color" -> color, "Line" -> line, "UseId" -> useId, "SourceId" -> srcId } } }, true )
第一个问题(来自 IntelliJ)是希望所有的 “,” 变成 “;”,但我认为这不正确。为了进行调试,我采纳了这个要求,这导致了第二个错误:
“错误:(java.lang.String, java.lang.String) => com.mongodb.casbah.query.Imports.DBObject 没有隐式视图可用。涉及默认参数的应用程序中发生了错误。“信息”$not { _ $elemMatch {"
所以我想问的是,我能否在 Casbah 的命令行中完成我的更新操作?如果可以,该怎么做呢?
谢谢!