db.collection.find()查询中的不同结果
我对正在返回重复结果的集合db.users.find()进行查询。例如user._id“1”可以重复多次。db.collection.find()查询中的不同结果
有没有办法返回不同的结果?
单个find
不应该返回重复的结果,因为在Mongo中没有连接这样的事情,所以没有任何情况下单个文档将被查询返回两次。所以你所描述的事情听起来应该是永远不会发生的 - 但是如果没有更多的细节,很难说。
但是,有一种可能性是find
返回一个打开的游标,因此,例如,如果您正在迭代大量文档并随时更新它们,则最终可能会在稍后再次获取相同的文档。原因是您的更新可能会增加文档的大小,使其不再适合其拥有的空间,因此它必须在收集结束时重新分配空间,之后再次由光标。如果这就是你正在做的事情,你可能需要考虑以不同的方式进行更新。
如果只想所有不同user._id,使用db.users.distinct(“_ ID”)
,如果你想用不同的_id整个记录你必须考虑的策略2之间进行选择的使用相同的用户记录._id 您可以使用组或地图缩小但您必须考虑,当有2个用户具有相同的_id时,我想要什么。
顺便说一下,_id通常由mongodb生成,并且应该是唯一的。如果您有两个相同的ID,您或者您的收藏夹中插入率非常高,或者您自己生成_id。 是否有任何特殊的原因你正在产生非独特的_id?
不应该_id字段总是唯一的,不管它是如何生成的?它说“对于集合中的每个文档,_id必须是唯一的”(来自http://www.mongodb.org/display/DOCS/Object+IDs)。 – burger
你是对的,他们应该是独一无二的:http://www.mongodb.org/display/DOCS/Object+IDs – kamaradclimber
你可以添加你试过的示例查询吗? – RameshVel