私はscalaとcashbahの両方が初めてです。私は。。をしようとしています
- 存在する場合はドキュメントを更新し (_id で)、存在しない場合は作成します。
- 更新中に、いくつかのキー値を更新します
- 更新中に、値がセットであるいくつかのキーを更新し、それらのセットにいくつかのデータを含めます。
これを達成するために、私はこれを書きました:
DBObject = MongoDBObject("_id" -> uri.toString) ++
$addToSet("appearsOn" -> sourceToAppend) ++
$addToSet("hasElements" -> elementsToAppend) ++
$addToSet("hasTriples" -> triplesToAppend) ++
MongoDBObject("uDate" -> new DateTime)
/* Find and replace here! */
OntologyDocument.dao.collection.findAndModify(
query = MongoDBObject({"_id" -> uri.toString}),
update = update,
upsert = true,
fields = null,
sort = null,
remove = false,
returnNew = true
)
ドキュメントは によって参照され_id
、いくつかの新しい項目が に追加されappearsOn
hasElements
hasTriples
、uDate
更新されました。
sourceToAppend
elementsToAppend
そしてtriplesToAppend
_List[String]
これを実行すると、次のエラーが発生しました。
java.lang.IllegalArgumentException: fields stored in the db can't start with '$' (Bad Key: '$addToSet')
at com.mongodb.DBCollection.validateKey(DBCollection.java:1444) ~[mongo-java-driver-2.11.1.jar:na]
わかりませんでした。このクエリの何が問題になっていますか? $addToSet
フィールドではありませんが、なぜカスバはそれがフィールドだと思いますか? ここで何が間違っていますか?