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
MongoDB:使用多个并发编写器获取上次插入文档的ObjectId?_Mongodb_Mongoid_Mongomapper_Nosql - Fatal编程技术网

MongoDB:使用多个并发编写器获取上次插入文档的ObjectId?

MongoDB:使用多个并发编写器获取上次插入文档的ObjectId?,mongodb,mongoid,mongomapper,nosql,Mongodb,Mongoid,Mongomapper,Nosql,考虑以下MongoDB场景: 三个编写器(A、B、C)将文档插入同一个集合 首先插入A,然后插入B,然后插入C 我们如何保证A检索他插入的文档的ObjectId,而不是B的文档或C的文档?我们是否需要序列化写入(即,仅允许B在A插入并检索ObjectId之后写入),或者MongoDB是否为此场景提供了一些本机功能 谢谢 我们在正轨上。这里的正常模式是驱动程序分配ObjectId,然后在服务器获取ObjectId之前您就知道插入是什么。这里的正常模式是驱动程序分配ObjectId,然后您就知道在服

考虑以下MongoDB场景:

三个编写器(A、B、C)将文档插入同一个集合

首先插入A,然后插入B,然后插入C

我们如何保证A检索他插入的文档的ObjectId,而不是B的文档或C的文档?我们是否需要序列化写入(即,仅允许B在A插入并检索ObjectId之后写入),或者MongoDB是否为此场景提供了一些本机功能

谢谢


我们在正轨上。

这里的正常模式是驱动程序分配ObjectId,然后在服务器获取ObjectId之前您就知道插入是什么。

这里的正常模式是驱动程序分配ObjectId,然后您就知道在服务器获取ObjectId之前插入是什么。

您可以生成
\u id
插入文档之前,在客户端应用程序(编写器)中输入值。这样,您就不需要依赖生成ObjectId的服务器来检索正确的值。如果您将_id留空,大多数MongoDB语言驱动程序将自动为您执行此操作。

您可以在插入文档之前在客户端应用程序(编写器)中生成
\u id
值。这样,您就不需要依赖生成ObjectId的服务器来检索正确的值。如果您将_id留空,大多数MongoDB语言驱动程序将自动为您执行此操作。

findAndModify命令还将返回分配的对象id;在那里,你可以做一个上插。findAndModify命令还返回分配的对象id;在那里,你可以做一个上插。