我使用卡斯巴2.9.2
我的MongoDB的模式是這樣的:
[_id: 「三角」 信息:顏色: 「紅色」,行:「薄「,UseID:」1「,SourceId:」2「]]
我希望能夠編寫一個更新行,首先檢查_id,Color和Line是否是唯一的,如果是則更新UseID和SourceID創建一個新的「信息」條目。這讓我正是我想要的命令行:
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" } ] ]
然而,當我翻譯成卡斯巴斯卡拉它並不:
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。涉及默認參數的應用程序中發生錯誤。 「信息」 $ {不_ $ {elemMatch」
所以我想,問題是,我甚至可以做我在卡斯巴在命令行中做更新?如果是這樣,怎麼樣?
謝謝!