【问题标题】:mongo-go-driver get inserted documentmongo-go-driver 获取插入的文档
【发布时间】:2020-12-16 17:28:49
【问题描述】:

Collection.InsertOne() 返回一个*InsertOneResult,它只包含插入文档的ID。要获取插入的文档,您必须执行另一个 Collection.Find() 查询。有没有办法一步完成?

当前的解决方法是使用Collection.FindOneAndUpdate() 并将Upsert 设置为true,因为这会返回一个*SingleResult,然后可以将其解码为一个结构,然后发送回客户端。

【问题讨论】:

  • InsertOne() 期望文档被插入,所以调用的时候必须要有。唯一“可选”的东西是_id,它在InsertOneResult 中返回给您。请说明您想要实现的目标。
  • 我只是想知道您是否可以在插入后返回整个 bson 文档。我只是习惯了其他形式。
  • @I_A 我也有同样的问题 - 你找到合适的解决方案了吗?

标签: mongodb go mongo-go mongo-go-driver


【解决方案1】:

如果您希望您的申请有完整的文件:

  • 在客户端生成_id
  • 插入完整的文档

此时您拥有的文档正是数据库拥有的文档,从插入返回它是没有意义的。

其他一些数据库在服务器端生成 id,但对于 MongoDB,每个驱动程序都在客户端实现 id 生成,以便在插入之前可以完全知道每个文档。

【讨论】:

    猜你喜欢
    • 2018-09-30
    • 1970-01-01
    • 2019-03-12
    • 2019-04-06
    • 2019-07-13
    • 1970-01-01
    • 2020-09-26
    相关资源
    最近更新 更多