3

如果可能的话,我想在 insertOne 操作后返回 mongo 生成的 ObjectId()

 def insert(inputDocument : Map[String,Any], databaseName : String, collectionName : String, mongoClient : MongoClient)
  : Future[Completed] = {

    implicit val formats: DefaultFormats.type = DefaultFormats

    val createdAt = new Date()
    val createdAtUnix = System.currentTimeMillis()

    val insertJson = write( inputDocument ++ Map("createdAt" -> createdAt, "createdAtUnix" -> createdAtUnix))

    val database: MongoDatabase = mongoClient.getDatabase(databaseName)
    val collection: MongoCollection[Document] = database.getCollection(collectionName)

    val insertDocument = Document(insertJson)
    collection
      .insertOne(insertDocument)
      .toFuture()

  }

如果不可能,我知道可以生成一个,但是如何确保它是唯一的?

4

1 回答 1

0

要获取插入的对象的 id,请使用:

collection.insertOne(e).head.map{_ => e._id.toHexString}

如果您想将自己的 id 发送给 mongo 生成并使用immutable.Document,但使用不可变文档时不要忘记始终设置_id

要生成唯一 ID,您可以使用“ObjectId.get()”

于 2021-09-15T09:00:11.997 回答