Mongodb db.collection.find()查询中的不同结果

Mongodb db.collection.find()查询中的不同结果,mongodb,Mongodb,我对返回重复结果的集合db.users.find()进行了查询。例如,用户。_id“1”可以重复多次 有没有一种方法可以返回不同的结果?单个查找不应该返回重复的结果,因为Mongo中没有连接这样的东西,所以在任何情况下,单个文档都不会被查询返回两次。所以,你所描述的听起来似乎永远不会发生——但如果没有更多的细节,很难说 但是,一种可能性是find返回一个打开的光标,因此,例如,如果您在遍历大量文档并在执行过程中对其进行更新,那么以后可能会再次获取相同的文档。这样做的原因是,您的更新可能会增加文档

我对返回重复结果的集合db.users.find()进行了查询。例如,用户。_id“1”可以重复多次


有没有一种方法可以返回不同的结果?

单个
查找不应该返回重复的结果,因为Mongo中没有连接这样的东西,所以在任何情况下,单个文档都不会被查询返回两次。所以,你所描述的听起来似乎永远不会发生——但如果没有更多的细节,很难说


但是,一种可能性是
find
返回一个打开的光标,因此,例如,如果您在遍历大量文档并在执行过程中对其进行更新,那么以后可能会再次获取相同的文档。这样做的原因是,您的更新可能会增加文档的大小,使其不再适合现有空间,因此必须在集合末尾重新分配空间,稍后光标会再次拾取该文档。如果这就是您正在做的,您可能需要考虑以不同的方式进行更新。

如果您只需要所有不同的用户。\u id,请使用db.users.distinct(\u id”)

如果您希望整个记录具有不同的_id,您必须考虑一种策略,在具有相同用户的两个记录之间进行选择。_id 您可以使用group或map reduce,但您必须考虑,当有两个用户具有相同的_id时,我想要什么

顺便说一句,_id通常由mongodb生成,并且应该是唯一的。如果你有两个相同的id,要么你在你的集合中有一个非常高的插入率要么你自己生成了_id。
您生成非唯一的\u id有什么特殊原因吗?

您可以添加一个您尝试过的示例查询吗?id字段不应该总是唯一的,不管它是如何生成的吗?它说“集合中的每个文档的\u id必须是唯一的”(from)。您是对的,它们应该是唯一的: