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

时间:2011-09-25 03:32:10

标签: mongodb

我查询了一个返回重复结果的集合db.users.find()。例如,user._id“1”可以重复多次。

有没有办法返回不同的结果?

2 个答案:

答案 0 :(得分:1)

如果您只想要所有不同的user._id,请使用db.users.distinct(“_ id”)

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

BTW,_id通常由mongodb生成,并且应该是唯一的。如果您有两个ID相同,或者您的集合中的插入率非常高,要么您自己生成_id。 您是否有任何特殊原因要生成非唯一_id?

答案 1 :(得分:0)

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

但是,有一种可能性是find返回一个打开的游标,因此,例如,如果您正在迭代大量文档并随时更新它们,那么最终可能会返回相同的文档稍后再试。这样做的原因是您的更新可能会增加文档的大小,使其不再适合它所拥有的空间,因此必须在集合末尾重新分配空间,以后稍后再将其重新分配。光标。如果这就是你正在做的事情,你可能需要考虑以不同的方式进行更新。

相关问题