Ошибка вставки встроенных документов в MongoDB с использованием Scala - PullRequest
0 голосов
/ 03 апреля 2020

Я использую mon go - scala -driver 2.9.0, и это функция сохранения списка рекомендаций пользователя в MongoDB. Аргумент streamRecs является массивом (productId: Int, оценка: Double). Теперь я хочу вставить документ, состоящий из useId и его соответствующего списка рекомендаций recs . Однако в строке val doc:Document = Document("userId" -> userId,"recs"->recs) есть ошибка. Кто-нибудь знает, что идет не так?

  def saveRecsToMongoDB(userId: Int, streamRecs: Array[(Int, Double)])(implicit mongoConfig: MongoConfig): Unit ={
    val streamRecsCollection = ConnHelper.mongoClient.getDatabase(mongoConfig.db).getCollection(STREAM_RECS_COLLECTION)
    streamRecsCollection.findOneAndDelete(equal("userId",userId))
    val recs: Array[Document] = streamRecs.map(item=>Document("productId"->item._1,"score"->item._2))
    val doc:Document = Document("userId" -> userId,"recs"->recs)
    streamRecsCollection.insertOne(doc)
  }

документ, который я хочу вставить в MongoDB, выглядит следующим образом (это означает, что пользователь и его рекомендации и оценки):

{
  "_id":****,
  "userId":****,
  "recs":[
         {
          "productId":****,
          "score":****
         },
         {
          "productId":****,
          "score":****
         },
         {
          "productId":****,
          "score":****
         },
         {
          "productId":****,
          "score":****
         }                                                                                              
         ]

}

1 Ответ

0 голосов
/ 21 апреля 2020

При создании документа BSON, объявите тип Bson явно для каждого значения в паре ключ / значение, например:

/* Compose Bson document */
val document = Document(
   "email" -> BsonString("email@domain.com"),
   "token" -> BsonString("some_random_string"),
   "created" -> BsonDateTime(org.joda.time.DateTime.now.toDate)
)

Чтобы увидеть пример, отметьте https://code.linedrop.io/articles/Storing-Object-in-MongoDB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...