【问题标题】:How to return mongodb ObjectId _id after insertOne with mongodb scala driver如何使用 mongodb scala 驱动程序在 insertOne 后返回 mongodb ObjectId _id
【发布时间】:2021-09-15 17:00:11
【问题描述】:

如果可能的话,我想在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()

  }

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

【问题讨论】:

  • 不可能,在客户端生成 ID 以便客户端知道。

标签: mongodb scala mongodb-scala


【解决方案1】:

获取被插入对象的ID:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    相关资源
    最近更新 更多