Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mgo insert()之后立即在mongodb中获取文档id的最佳方法_Mongodb_Mgo - Fatal编程技术网

在mgo insert()之后立即在mongodb中获取文档id的最佳方法

在mgo insert()之后立即在mongodb中获取文档id的最佳方法,mongodb,mgo,Mongodb,Mgo,我的代码是go,使用mgo。 我需要创建一个文档并返回新创建文档的id。只有插入成功时,才能将id返回给最终客户端 这里最好的方法是什么 在insert()之后按字段搜索文档并不总是有效: 如果我采取先插入然后按唯一字段的值搜索文档的方法,则插入后的搜索不会返回任何内容。 您可能会问,为什么不将此唯一字段用作ID。在这种情况下,选择不将此字段的值用作“\u ID”。搜索或返回文档的问题可能是由于写入/插入和索引延迟造成的 以下是我遇到的一些方法 通过bson.NewObjectId()生成id,

我的代码是go,使用mgo。 我需要创建一个文档并返回新创建文档的id。只有插入成功时,才能将id返回给最终客户端

这里最好的方法是什么

在insert()之后按字段搜索文档并不总是有效: 如果我采取先插入然后按唯一字段的值搜索文档的方法,则插入后的搜索不会返回任何内容。 您可能会问,为什么不将此唯一字段用作ID。在这种情况下,选择不将此字段的值用作“\u ID”。搜索或返回文档的问题可能是由于写入/插入和索引延迟造成的

以下是我遇到的一些方法

通过bson.NewObjectId()生成id,并将其与Insert()一起使用。然后查询数据以确保它在那里。

  • 然而,这里的查询是否与我前面提到的“插入后查询”方法中的查询不同?换句话说,此查询是否存在基于最近的插入操作(从某些缓存)返回数据而不是通过索引从磁盘检查数据的风险
  • 此外,在分布式设置中,可能存在此ID容易发生冲突的边缘情况?换句话说,bson.NewObjectId()返回的值的唯一性有多可靠?我是否应该按此ID执行搜索以确保此ID未被使用
依赖安全模式。

  • 我是否可以仅对此插入使用SafeMode,而不是在连接级别设置它