0

私は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 hasTriplesuDate更新されました。

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フィールドではありませんが、なぜカスバはそれがフィールドだと思いますか? ここで何が間違っていますか?

4

1 に答える 1